我正在尝试开发本地 supabase 边缘函数。我已按照文档正确安装并在本地部署了该函数。
我有一个简单的边缘函数,当它收到请求时,它会从数据库中获取一些数据:
import { createClient } from 'https://esm.sh/@supabase/[email protected]'
Deno.serve(async (req) => {
try {
const supabase = createClient(
Deno.env.get('SUPABASE_URL') ?? '',
Deno.env.get('SUPABASE_ANON_KEY') ?? '',
{ global: { headers: { Authorization: req.headers.get('Authorization')! } } }
)
// Fetch all websites from the 'websites' table
const { data: websites, error } = await supabase
.from('websites')
.select('url')
.limit(1)
if (error) {
console.log(error)
throw error
}
我曾经supabase function serve
在本地进行测试,但每次启动http://127.0.0.1:54321/functions/v1/<function-name>
测试时都会出现错误
{"error":"relation \"public.<table_name>\" does not exist"}
我也尝试过改变,SUPABASE_ANON_KEY
但SUPABASE_SERVICE_ROLE_KEY
同样的问题
该表public.<table_name>
存在于我的 Supabase 云实例上
我也尝试过禁用 RLS,但问题仍然存在。
我也尝试过遵循这个简单的例子但是失败了......
直接在 Supabase 云上运行 SQL 查询即可SELECT <column_name> FROM public.<table_name>
我认为局部边缘功能存在一些问题
在您的代码中,您将使用
Deno.env.get('SUPABASE_URL')
将调用本地 supabase url 而不是您的云托管 url。您需要.env
在您的supabase/functions
目录中设置一个文件,其中包含SUPABASE_URL
您的云托管端点,以便它与您的云托管 supabase 实例一起工作。请注意,您还需要SUPABASE_ANON_KEY
在.env
文件中设置以匹配云托管的 url。