const { data, error } = await supabase
.from('cities')
.select('name, country_id')
.eq('name', 'The Shire') // Correct
const { data, error } = await supabase
.from('cities')
.eq('name', 'The Shire') // Incorrect
.select('name, country_id')
过滤器必须在select()
, update()
、upsert()
、delete()
和rpc()
之后,并在修改器之前应用。
const { data, error } = await supabase
.from('cities')
.select('name, country_id')
.gte('population', 1000)
.lt('population', 10000)
过滤器可以串联起来,产生高级查询。例如。
来查询人口在1,000和10,000之间的城市。
const filterByName = null
const filterPopLow = 1000
const filterPopHigh = 10000
let query = supabase
.from('cities')
.select('name, country_id')
if (filterByName) { query = query.eq('name', filterByName) }
if (filterPopLow) { query = query.gte('population', filterPopLow) }
if (filterPopHigh) { query = query.lt('population', filterPopHigh) }
const { data, error } = await query
过滤器可以一步步建立起来,然后执行。这个例子就可以很好地说明。
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
)
`)
.eq('cities.name', 'Bali')
您可以使用点表示法在select()
查询中对外部表进行过滤。