使用过滤器
过滤器允许你只返回符合某些条件的记录。
过滤器可以用于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');