如何从Webhook将数据存储到数据库中

问题描述 投票:0回答:1

我是 Next.js 和 Supabase 的新手。我正在使用 Replicate 中的 Webhook 来接收来自图像生成过程的数据。我的目标是将这些数据存储在我的 Supabase 数据库中。这是我编写的用于将生成的图像上传到 Supabase 的函数:

export async function uploadGeneratedImagesToSupabase(original_image_cloudinary_public_id: string, cloudinary_public_id: string[]) {
  const supabase = createClient();
  const {data, error} = await supabase
    .from('generated_images')
    .insert({original_image_cloudinary_public_id, cloudinary_public_id})
    .single();
  if (error) {
    return {error: error};
  }
  revalidatePath('/create');
  return {data: data};
}

我认为因为 webhook 不是从应用程序内获取的,supabase 无法识别经过身份验证的用户并抛出以下错误:

error: {
  code: '42501',
  details: null,
  hint: null,
  message: 'new row violates row-level security policy for table "generated_images"'
}

有人知道如何解决这个问题或如何解决它吗?

(也许我必须重新设计通过网络钩子接收数据的整个结构)

谢谢!

我已经获得了使用服务角色密钥来存储数据的信息,但是如何参考生成图像的用户来存储生成的图像?

authentication next.js webhooks supabase replicate
1个回答
0
投票

我假设您正在 Next.js 创建的端点上接收 Webhook。初始化 Supabase 时,您可以使用服务角色密钥代替匿名密钥来初始化 Supabase 客户端。使用服务角色密钥初始化的 Supabase 客户端可以绕过 RLS 策略。

请注意,您永远不应该在前端公开服务角色密钥,因为用户在获得任何数据库后就可以访问该数据库。

© www.soinside.com 2019 - 2024. All rights reserved.