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 메서드를 활용한 조인은 관련된 데이터를 한 번의 요청으로 가져올 수 있어, 애플리케이션의 성능과 코드의 효율성을 크게 향상시킬 수 있다는 점을 깨달았습니다.