我有一个messages表,在Supabase的“public”模式下。我尝试从本地开发环境中获取所有行,但是没有任何返回。
我在努力:
const response = await supabase.from('messages').select('*');
我在Supabase日志中看到请求:
使用Sveltekit作为客户端,加载函数:
/** @type {import('./$types').PageLoad} */
export async function load() {
const response = await supabase.from('messages').select('*');
return { response };
}
下面是回应的日志:
{@debug} /src/routes/+page.svelte (6:1)
{
data: {
response: {
error: null,
data: [],
count: null,
status: 200,
statusText: 'OK'
}
}
}
这是表格
2条答案
按热度按时间8tntrjer1#
OP已经通过禁用RLS解决了这个问题。我将提供进一步的上下文来说明这是如何解决这个问题的。
RLS代表行级安全,它使只有行的所有者可以查看他们自己的数据。假设用户A插入了一行数据,只有用户A可以看到它。如果您以用户B的身份运行
select *
,您将无法看到它。这有助于防止其他用户与用户的项目交互。
在您的情况下,有两种其他的处理方法:
1.如果您以管理员身份查询
如果您是管理员,并且应该有权访问所有数据,那么要初始化supabase javascript客户端,您可以使用服务密钥而不是anon密钥,后者将给予您所有权限
2.如果您只希望每个人都能查看所有内容
在行级安全规则中,您可以只禁用SELECT的规则,而不禁用RLS的插入、更新和删除规则,这样用户只能插入、更新和删除自己的内容,但可以查看所有人的内容。
e5nqia272#
我已经启用了“RLS”
,这就是为什么没有结果。
禁用它就成功了。有关RLS的更多信息:https://supabase.com/docs/guides/auth/row-level-security