supabase를 사용중이다. join을 통해 여러 테이블에서 데이터를 가지고 오고 싶었는데, 기존의 join은 어째서인지.. 불가능한 부분이 있었다.
supabase의 공식 문서를 보면 아래와 같이 작성했을 때 inner join이 가능하다고 나와있지만 실제로 시도 해 보니 parse 에러가 발생했다. 날 속였어!
const getPost = async (id: string) => {
const { data } = await supabase
.from('posts')
.select(
// userId로 join하기 위해 users테이블 내부에 inventory 테이블을 넣어준다.
'*,users(nickname,profile_img_url,inventory(id,items(name,img_url,category)))',
)
.eq('id', id)
// posts 테이블과 연결된 users 테이블과 연결된 inventory 테이블에서 조건을 준다.
.eq('users.inventory.is_equipped', true)
.single();
return data;
};
우선은 db요청을 두번 하는걸로 타협하고, 몇일 뒤에 다시 시도하게 되었다.
다시 겁나게 Docs와 검색을 하며 수정했지만, 작동하지 않아서 결국 신버전(V2)이 기본으로 세팅되어 있어서 찾아보지 않았던 구버전(V1)의 함수로 시도 해 보기로 했다.
const getPost = async (id: string) => {
const { data } = await supabase
.from('posts')
.select(
'*,users!inner(nickname,profile_img_url,inventory(id,items(name,img_url,category)))',
)
.eq('id', id)
.eq('users.inventory.is_equipped', true)
.single();
return data;
};
바로 작동했다. 신버전의 메서드로는 안되던 join이 구버전 메서드로 작동하다니 너무 열받았지만 그래도 된게 너무 기뻤다! 어쨋든 join도 해결되었으니 db 요청을 두번하던 일이 줄게 되었다. 신난다!
'기록 > TIL' 카테고리의 다른 글
2023.09.15 useMemo로 최적화 해보기 (0) | 2023.09.15 |
---|---|
2023.09.13 (0) | 2023.09.13 |
2023.09.11 (0) | 2023.09.11 |
2023.09.08 모달 z-index가 안먹힌다? (0) | 2023.09.08 |
2023.09.04 (0) | 2023.09.04 |