0320 프로젝트 중 (약간 수정예정 ~_ㅠ)
저번 글에서 간략하게 테이블 생성까지 해봤었고 이제 외래 키도 활용해보려고 한다..!!
DB를 써봤다면 잘 알겠지만, SQL을 살짝만 써봤던 나는 익숙하진 않았다. ..ㅠㅠ
foreign key (외래 키) 란?
관계형 데이터베이스에서 외래 키는 한 테이블의 필드 중 다른 테이블의 행을 식별할 수 있는 키로,
Supabase에서 foreign key는 두 테이블 간에 연결하기 위해 쓰이며, 이 foreign key로 연결된 두 테이블에서 한 테이블의 행이 다른 테이블의 행을 참조한다.
두 테이블은 외래 키를 통해 join될 수 있다.
(A foreign key is a field in one table that uniquely identifies a row of another table.)
(In Supabase, foreign keys are used to establish a link between two tables, creating a relationship where one table's row references another.)
(Tables can be "joined" together using Foreign Keys.)
아래코드가 외래키활용해 communityPosts 테이블에서도, communityComments 테이블에서도 자료를 가져온 것!
postId 외래키로 연결되어서, postId 필드에 해당하는 행 모두 * 를 communityPosts 에서 가져오고,
이 동일한 postId 필드의 값을 가진 communityComments 테이블의 행들을 모두 * 가져와서 comments 라고 이름 붙여준다.
const CommunityDetailPage = async ({ params }: { params: { id: string } }) => {
const postId = params.id;
const supabase = createClient();
// * 데이터 가져오는 함수를 따로 hook 처럼 뺼 지
// 게시글과 해당 게시글 댓글들 가져오기
const fetchPost = async () => {
// : Promise<communityPosts> 타입 외래키 comment 까지 다시 생성해야
try {
const { data: posts, error } = await supabase
.from('communityPosts')
.select('*, comments:communityComments(*)')
.eq('postId', postId);
if (error) throw error;
return posts![0];
} catch (error) {
console.error();
throw error;
}
};
'DB & BaaS' 카테고리의 다른 글
[BaaS] Supabase - Stroage RLS policy 설정해줘야 모두 이미지등록 가능! (0) | 2024.03.24 |
---|---|
[BaaS] Supabase - rpc, SQL editor를 활용해 배열 타입의 컬럼에 (문자열) 원소 추가하기 (2) | 2024.03.22 |
[BaaS/TS] Supabase - Supabase CLI로 Database의 타입 생성하기 (0) | 2024.03.20 |
[BaaS/Next.js] Supabase 소개 / next.js 프로젝트와 함께 설치해서 테이블 데이터 가져와보기 (0) | 2024.03.20 |