Supabase 사용 중 특정 테이블과 외래 키 관계인 다른 테이블의 데이터를 함께 가져와야 하는 상황이 발생했습니다.
처음에는 조인(join)을 활용하는 방법을 몰라 동일한 구문(.from
, .select
등)을 반복하여 데이터를 개별적으로 가져와야 했습니다. 이로 인해 반복적인 코드가 많아지는 문제가 발생했습니다.
Supabase의 select
메서드를 활용하여 테이블 간의 관계를 설정하고, 조인을 통해 관련 데이터를 한 번에 가져오는 방법을 학습하였습니다. 이를 통해 trips
와 contract
테이블 간의 외래 키(foreign key)를 활용한 조인을 구현할 수 있게 되었습니다. 다음과 같은 단계를 통해 문제를 해결했습니다:
Supabase 조인 기능 학습 및 이해:
select
메서드에서 관계된 테이블을 조인하는 방법을 공식 문서와 커뮤니티 자료를 통해 학습했습니다.조인 쿼리 작성 및 적용:
trips
테이블과 contract
테이블 간의 외래 키 관계를 활용하여 조인 쿼리를 작성했습니다.select
메서드 내에서 조인할 테이블과 필요한 필드를 지정하여 한 번의 요청으로 데이터를 가져올 수 있도록 수정했습니다.const {
data: trip,
error: tripError,
}: {
data: TripWithContract | null;
error: PostgrestError | null;
} = await supabase.from('trips').select('*, contract (*)').eq('trip_id', id).maybeSingle();
select('*, contract (*)')
구문을 통해 trips
테이블의 모든 필드와 관련된 contract
테이블의 모든 필드를 함께 가져오도록 설정했습니다.코드 최적화 및 테스트:
조인 쿼리를 활용한 후 다음과 같은 개선 효과를 얻었습니다:
select
메서드를 활용한 조인은 관련된 데이터를 한 번의 요청으로 가져올 수 있어, 애플리케이션의 성능과 코드의 효율성을 크게 향상시킬 수 있다는 점을 깨달았습니다.