我发现了Suabase是如何与NextJS一起工作的,并且我能够使用这个Suabase函数从给定地理区域的表中检索结果:
create or replace function jobs_in_view(min_lat float, min_long float, max_lat float, max_long float)
returns setof record
language sql
as $$
SELECT *, st_astext(location) AS location
FROM public.jobs
WHERE location && ST_SetSRID(ST_MakeBox2D(ST_Point(min_long, min_lat), ST_Point(max_long, max_lat)),4326)
$$;
const { data: jobs } = await supabase.rpc('jobs_in_view', bounds);
这段代码运行得很好,但现在,我想添加另一个像合约类型一样的筛选子句,所以我更新了我的函数,如下所示:
create or replace function jobs_in_view(min_lat float, min_long float, max_lat float, max_long float, contract_type varchar)
returns setof record
language sql
as $$
SELECT *, st_astext(location) AS location
FROM public.jobs
WHERE contract_type=contract_type
AND location && ST_SetSRID(ST_MakeBox2D(ST_Point(min_long, min_lat), ST_Point(max_long, max_lat)),4326)
$$;
const { data: jobs } = await supabase.rpc('jobs_in_view', { ...bounds, 'contract_type': 'full-time' });
过滤不起作用,并返回边界内的所有结果,但查询忽略了契约的类型。我在编写函数时遗漏了什么?