Supabase의 .order() 메서드는 데이터를 정렬할 때 사용된다.
이 메서드를 통해 반환되는 데이터의 순서를 지정할 수 있으며, SQL의 ORDER 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 옵션은 관계형 데이터에서 외래 키를 통한 정렬 시 사용된다.
이 경우 정렬하려는 열이 현재 테이블이 아닌 관련 테이블에 있을 때 유용하다.