我正在尝试通过 javascript 客户端 api 删除 supabase 表中的一行(稍后也尝试过邮递员)。 Supabase 通过 docker 在远程服务器上运行。我正在使用 Next.js,但出于测试目的,所有缓存已暂时禁用,因此问题不可能出在那里。
奇怪的是,添加和修改行是有效的。只有删除失败。
const { data, error } = await supabase.from("menus").delete().eq("id", "1");
if (error) {
console.error("Error deleting row:", error);
} else {
console.log("Row deleted:", data);
}
console.error(error);
根据文档,上述内容应该有效(存在 id=1 的行)。相反,它返回:
RLS 已禁用。我尝试同时使用 anon 密钥和 service_role 密钥,但没有成功。这两个角色都被授予超级用户权限。还授予他们删除数据的权限。
我显然检查了网络和所有最常见的修复,但没有任何效果。
编辑
我遇到了同样的问题,结果是,如果您启用了 RLS 策略,并且使用删除策略,您还需要在选择上创建策略。我猜逻辑是,如果无法读取数据,他们也无法删除它。