filter()
仅匹配满足过滤器条件的行。
尽管filter()
函数是一种通用的筛选方式,但为了代码的可读性和维护性,官方建议优先使用特定的筛选方法,以利用更简洁和直观的筛选语法。
例如,使用eq()
、gt()
、lt()
等特定的筛选方法,可以使查询更加清晰和易于理解。
filter()
期望您使用原始的 PostgREST语法 来指定过滤器的值。
.filter('id', 'in', '(5,6,7)') // Use `()` for `in` filter
.filter('arraycol', 'cs', '{"a","b"}') // Use `cs` for `contains()`, `{}` for array values
案例1 (和select一起使用) link
create table
countries (id int8 primary key, name text);
insert into
countries (id, name)
values
(1, 'Afghanistan'),
(2, 'Albania'),
(3, 'Algeria');
const { data, error } = await supabase
.from('countries')
.select()
.filter('name', 'in', '("Algeria","Japan")')
{
"data": [
{
"id": 3,
"name": "Algeria"
}
],
"status": 200,
"statusText": "OK"
}
案例2 (在外部表上) link
create table
countries (id int8 primary key, name text);
create table
cities (
id int8 primary key,
country_id int8 not null references countries,
name text
);
insert into
countries (id, name)
values
(1, 'Germany'),
(2, 'Indonesia');
insert into
cities (id, country_id, name)
values
(1, 2, 'Bali'),
(2, 1, 'Munich');
const { data, error } = await supabase
.from('countries')
.select(`
name,
cities!inner (
name
)
`)
.filter('cities.name', 'eq', 'Bali')
{
"data": [
{
"name": "Indonesia",
"cities": [
{
"name": "Bali"
}
]
}
],
"status": 200,
"statusText": "OK"
}
列(column)
[必要参数]
string类型
操作符(operator)
[必要参数]
string类型
值(value)
[必要参数]
任意类型