Supabase- Order 메서드

Hyeongmin·2024년 4월 9일
1

 TIL (Today I Learned)

목록 보기
53/54

오늘 supabase에서 점수를 저장하고 어떤식으로 해야 높은점수부터 차례로 불러올수 있을지 고민하던 중 알게된 order() 메서드에 대해 정리 해봤다.


order 메서드란 ?

Supabase의 .order() 메서드는 데이터를 정렬할 때 사용된다.
이 메서드를 통해 반환되는 데이터의 순서를 지정할 수 있으며, SQLORDER BY 구문과 유사하게 작동한다.


사용법

.order() 메서드는 두 가지 주요 매개변수를 받는다!

columnName: 데이터를 정렬할 열의 이름이다.

options: 정렬 옵션을 지정하는 객체이다.
여기에는 ascending (오름차순) 또는 descending (내림차순) 정렬을 지정할 수 있는 ascending 속성과, 다른 테이블과의 관계에서 정렬을 적용할 때 사용되는 foreignTable 속성이 포함될 수 있다.

어떻게 사용하는지 예를 들어 알아보면,
users 테이블에서 username 열을 기준으로 오름차순으로 데이터를 정렬하고자 한다면, 다음과 같이 .order() 메서드를 사용할 수 있다.

const { data, error } = await supabase
  .from('users')
  .select('*')
  .order('username', { ascending: true });

만약 내림차순으로 정렬하고 싶다면, ascending 옵션을 false로 설정하면 된다.

const { data, error } = await supabase
  .from('users')
  .select('*')
  .order('username', { ascending: false });

다중 정렬
여러 열에 대해 정렬을 적용하고 싶다면, .order() 메서드를 연속적으로 호출할 수 있다.
예를 들어, 먼저 last_name을 기준으로 오름차순으로 정렬하고, 그 다음 first_name을 기준으로 오름차순으로 정렬하려면 다음과 같이 작성할 수 있다.

const { data, error } = await supabase
  .from('users')
  .select('*')
  .order('last_name', { ascending: true })
  .order('first_name', { ascending: true });

주의사항

.order() 메서드는 반환되는 데이터의 순서만을 지정하며, 데이터 자체를 필터링하거나 제한하는 기능은 없다.
필터링이 필요한 경우 .eq(), .lt(), .gte() 등 다른 메서드를 함께 사용해야 한다.
foreignTable 옵션은 관계형 데이터에서 외래 키를 통한 정렬 시 사용된다.
이 경우 정렬하려는 열이 현재 테이블이 아닌 관련 테이블에 있을 때 유용하다.

0개의 댓글