Supabase:如何通过电子邮件查询用户?

问题描述

我在 Node JS 中间件中使用 Supabase。我正在开发一个邀请功能,该功能通过 REST 端点接收现有 supabase 用户的电子邮件地址。现在它应该查询用户表以获取用户 ID。但这似乎不起作用:

(我使用 Supabase JavaScript 库和绕过行级安全的管理密钥):

const { createClient,} = require('@supabase/supabase-js')
const supabase = createClient(process.env.SUPABASE_URL,process.env.SUPABASE_KEY)
supabase
  .from('users')
  .select('id')
  .eq('email','doe@example.com')
  .then(response => {
    console.log(response)
  })

我收到此错误

'关系“public.users”不存在'

我也尝试了一个查询

supabase
  .from('users')
  .select('id')
  .eq('email','doe@example.com')
  .then(response => {
    console.log(response)
  })

但这也失败了。好像不能查询users表。

我做错了什么?如何通过给定的电子邮件查询用户 ID?

谁能把我推向正确的方向?

谢谢,

尼可

解决方法

自己找到了解决方案:

您不能直接查询 auth.users 表。相反,您必须使用稍后要使用的数据创建副本(例如 public.users 或 public.profile 等)。

您可以使用用户触发器在创建用户后自动在 public.users 表中创建一个条目。

我在我的博文中写下了一些代码示例和详细信息:Supabase: How to query users table?