Estou tentando desenvolver uma função de borda supabase local. Segui a documentação e instalei corretamente e implantei localmente a função.
Tenho uma função de borda simples que, quando recebe uma solicitação, busca alguns dados do banco de dados:
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
}
Eu costumo supabase function serve
testar localmente, mas toda vez que lanço http://127.0.0.1:54321/functions/v1/<function-name>
para testar, recebo o erro
{"error":"relation \"public.<table_name>\" does not exist"}
Eu também tentei mudar o SUPABASE_ANON_KEY
com o SUPABASE_SERVICE_ROLE_KEY
mesmo problema
A tabela public.<table_name>
existe na minha instância de nuvem do Supabase
Também tentei desabilitar o RLS, mas o problema continua o mesmo.
Eu também tentei seguir este exemplo simples , mas não deu certo...
Executar a consulta SQL diretamente na nuvem Supabase funcionaSELECT <column_name> FROM public.<table_name>
Acho que há algum problema com a função de borda local
No seu código, você está usando
Deno.env.get('SUPABASE_URL')
which chamará a URL local do supabase e não a sua hospedada na nuvem. Você precisaria definir um.env
arquivo dentro do seusupabase/functions
diretório com oSUPABASE_URL
para o seu endpoint hospedado na nuvem para que isso funcione com sua instância do supabase hospedada na nuvem. Observe que você também precisará definir oSUPABASE_ANON_KEY
no seu.env
arquivo para corresponder ao da instância hospedada na nuvem.