使用过滤器

过滤器允许你只返回符合某些条件的记录。

过滤器可以用于select()update()delete()查询。

如果一个数据库函数返回一个表的响应,你也可以应用过滤器。

案例教程

案例1 (使用过滤器)#

1                                                                              
2final data = await supabase
3  .from('cities')
4  .select('name, country_id')
5  .eq('name', 'The Shire');  // Correct
6
7final data = await supabase
8  .from('cities')
9  .eq('name', 'The Shire')  // Incorrect
10  .select('name, country_id');

案例2 (链式过滤)#

1                                                                              
2final data = await supabase
3  .from('cities')
4  .select('name, country_id')
5  .gte('population', 1000)
6  .lt('population', 10000)

案例3 (条件链式)#

1                                                                              
2final filterByName = null;
3final filterPopLow = 1000;
4final filterPopHigh = 10000;
5
6var query = supabase
7  .from('cities')
8  .select('name, country_id');
9
10if (filterByName != null)  { query = query.eq('name', filterByName); }
11if (filterPopLow != null)  { query = query.gte('population', filterPopLow); }
12if (filterPopHigh != null) { query = query.lt('population', filterPopHigh); }
13
14final data = await query;

案例4 (按JSON列中的值过滤)#

1                                                                              
2final data = await supabase
3  .from('users')
4  .select()
5  .eq('address->postcode', 90210);

案例5 (过滤外键表)#

1                                                                              
2final data = await supabase
3  .from('countries')
4  .select('''
5    name,
6    cities!inner (
7      name
8    )
9  ''')
10  .eq('cities.name', 'Bali');