标签: supabase

如何在 Supabase 中获取“COUNT(*)”

我想在 Supabase 中检索行数。

我猜它会是这样的:

const { data, error } = await supabase
  .from('cities')
  .select('name', 'COUNT(*)')
Run Code Online (Sandbox Code Playgroud)

Supabase 可以做到这一点吗?

supabase

3
推荐指数
1
解决办法
685
查看次数

SUPABASE 中带参数的复杂查询

我想except在 supabase 中创建此查询,但在day列中使用参数。例如:

CREATE VIEW employees_without_registering AS 
  SELECT employees.id
  FROM employees
  EXCEPT
  SELECT "idEmployee" FROM registers WHERE "day"='2021-07-25'
Run Code Online (Sandbox Code Playgroud)

我尝试的是在查询编辑器中创建一个视图,然后尝试使用如下内容访问结果:

await supabase.from('employees_without_registering')
  .select('*');
Run Code Online (Sandbox Code Playgroud)

但结果仅限于该查询。我想根据我的选择改变这一天。

也许我的方法不好,可以通过使用supabase api的另一种方法来解决这个问题,但我想听听有关如何解决这个问题的建议。

supabase

3
推荐指数
1
解决办法
6005
查看次数

supabase.auth.getUser() 在 vue-router 路由防护上返回错误

我正在尝试构建一个使用 Supabase 身份验证的 Vue 应用程序。在路由器文件中的一个路由防护中,我实现了一个supabase.auth.getUser()条件,以检索用户登录状态,该条件阻止next()在用户经过身份验证之前执行:

// Route guard for auth routes
router.beforeEach((to, from, next) => {
  // const user = supabase.auth.user();
  const { data: { user } } = await supabase.auth.getUser();

  if (to.matched.some((res) => res.meta.auth)) {
    if (user) {
      next();
      return;
    }
    next({ name: "Login" });
    return;
  }
  next();
});
Run Code Online (Sandbox Code Playgroud)

但是,当我supabase.auth.getUser()在路由器防护内部实现时,我在登录之前在控制台中收到以下错误:“无效声明:缺少子声明”。登录后,错误消失。如果我从路由保护中删除supabase.auth.getUser条件,错误也会消失。经过一些额外的在线挖掘并在 jwt.io 中运行我的 Supabase 匿名密钥后,我的密钥似乎在有效负载中缺少子声明。如果这导致密钥无法正确验证,我该如何解决?

javascript vue.js vuejs3 supabase supabase-database

3
推荐指数
1
解决办法
5082
查看次数

如何一次性部署所有Supabase边缘功能?

我有多个 Supabase 边缘功能,希望在投入生产时同时部署。这些是我的文件夹中的所有功能.supabase/functions,即:

.supabase
    functions
        my_function_1
            index.ts
        my_function_2
            index.ts
        ...
Run Code Online (Sandbox Code Playgroud)

Supabase CLI 文档解释了如何使用 部署单个函数supabase functions deploy <Function name> [flags],但似乎没有提及将所有函数一起部署。

我是否必须为每个函数运行一次部署命令?例如:

supabase functions deploy my_function_1 && supabase functions deploy my_function_2
Run Code Online (Sandbox Code Playgroud)

或者有更简单的方法吗?

我尝试简单地运行supabase functions deploy,但收到​​此错误,表明我需要将函数名称作为参数传递:

Error: accepts 1 arg(s), received 0
Usage:
  supabase functions deploy <Function name> [flags]
Run Code Online (Sandbox Code Playgroud)

等价的 firebase 函数是firebase deploy --only functions文档

supabase

3
推荐指数
1
解决办法
634
查看次数

在 next.js 中获取 supabase `user` 服务器端

我试图在服务器端获取当前登录的 supabase 用户。

我尝试过使用const user = supabase.auth.user();,但总是得到null回应。

我也尝试过const user = supabase.auth.getUserByCookie(req),但它也返回null。我想是因为从钩子调用它时我没有向 api 发送 cookie。

我尝试将user.id钩子传递到 api,但 api 没有接收参数。

我也尝试过这种方法,但从未获取令牌。req.cookies 中似乎不存在。

    let supabase = createClient(supabaseUrl, supabaseKey);
    let token = req.cookies['sb:token'];
    if (!token) {
        return 
    }
    let authRequestResult = await fetch(`${supabaseUrl}/auth/v1/user`, {
        headers: {
            'Authorization': `Bearer ${token}`,
            'APIKey': supabaseKey
        }
    });
`
Run Code Online (Sandbox Code Playgroud)

有谁知道如何在服务器端代码中获取当前登录的用户?

next.js supabase supabase-database

2
推荐指数
1
解决办法
9847
查看次数

行级安全双连接

我有三张桌子

旅程
ID
用户身份
...
部分
ID
旅程_id
...
停止
ID
节号
...

我想使用行级安全性来确保用户只能插入 astop如果与via -> ->引用的the 相uid()匹配。user_idjourneystopstops.section_idsections.journey_idjourneys.user_id

换句话说,用户应该只能设置stops.section_id为a section,从而设置为journey属于他的a。

如何在 Supabase 中通过行级安全连接实现此目的?

postgresql row-level-security supabase

2
推荐指数
1
解决办法
836
查看次数

将 Base64 图像上传到 supabase

我的网站希望减少用户可以对图像执行的操作...因此为了增加安全性,我们希望将图像源保留为 base64 字符串而不是 supabase 存储 URL。这可以通过supabase存储实现吗?我是否必须将字符串保存在数据库中?

supabase supabase-database

2
推荐指数
1
解决办法
1561
查看次数

将数据导入 Supabase 中的表

是否可以将数据导入到supabase的表中?

例如,如果我有 csv 文件或 json 文件——我可以通过 supabase 后端将该数据导入到表中吗?

supabase supabase-database

2
推荐指数
1
解决办法
4381
查看次数

如何使用 Supabase 中的 signUp() 方法在注册时添加其他用户信息

我正在尝试构建一个包含 Supabase 身份验证的 Vue.js 应用程序。我希望在注册时使用内置的 Supabase signUp() 方法来处理其他用户数据。为此,我向 SignUp 对象添加了一个属性,用于存储其他用户数据以及电子邮件和密码:

let { data, error } = await supabase.auth.signUp({
  email: 'someone@email.com',
  password: 'QQlbOIyZuwutISUzceOz',
  data: { isVendor: true }
})
Run Code Online (Sandbox Code Playgroud)

但是,当我在创建用户后运行 console.log 时,我没有看到添加到用户对象中的其他数据属性。

user_metadata我还尝试将数据分配给用户对象中的现有属性,如下所示:

let { data, error } = await supabase.auth.signUp({
  email: 'someone@email.com',
  password: 'QQlbOIyZuwutISUzceOz',
  user_metadata: { isVendor: true }
})
Run Code Online (Sandbox Code Playgroud)

然而,这也没有奏效。如何配置 signUp() 方法(或者可能是 Supabase 仪表板中的注册用户门户)来存储其他用户数据?

javascript authentication vue.js supabase supabase-database

2
推荐指数
1
解决办法
2721
查看次数

有没有更好的方法来访问 Supabase 生成的 TS 类型?

我在我的 supabase 数据库中创建了一个名为的表customer。使用生成我的类型

npx supabase gen types typescript --project-id "$PROJECT_REF" --schema public > types/supabase.ts
Run Code Online (Sandbox Code Playgroud)

在我的 React 应用程序中,这就是我引用生成类型的方式。

const [customerDetails, setCustomerDetails] = useState<Database["public"]["Tables"]["customer"]["Row"]>()
Run Code Online (Sandbox Code Playgroud)

能不能再干净一点,像这样?

const [customerDetails, setCustomerDetails] = useState<customer>()
Run Code Online (Sandbox Code Playgroud)

types typescript supabase supabase-js

2
推荐指数
1
解决办法
929
查看次数