postgresql Supabase返回空数组

7ajki6be  于 2023-01-08  发布在  PostgreSQL
关注(0)|答案(2)|浏览(164)

我有一个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'
    }
  }
}

这是表格

8tntrjer

8tntrjer1#

OP已经通过禁用RLS解决了这个问题。我将提供进一步的上下文来说明这是如何解决这个问题的。
RLS代表行级安全,它使只有行的所有者可以查看他们自己的数据。假设用户A插入了一行数据,只有用户A可以看到它。如果您以用户B的身份运行select *,您将无法看到它。
这有助于防止其他用户与用户的项目交互。
在您的情况下,有两种其他的处理方法:

1.如果您以管理员身份查询

如果您是管理员,并且应该有权访问所有数据,那么要初始化supabase javascript客户端,您可以使用服务密钥而不是anon密钥,后者将给予您所有权限

2.如果您只希望每个人都能查看所有内容

在行级安全规则中,您可以只禁用SELECT的规则,而不禁用RLS的插入、更新和删除规则,这样用户只能插入、更新和删除自己的内容,但可以查看所有人的内容。

e5nqia27

e5nqia272#

我已经启用了“RLS”

,这就是为什么没有结果。
禁用它就成功了。有关RLS的更多信息:https://supabase.com/docs/guides/auth/row-level-security

相关问题