1

我无法更新启用了角色级别策略的行

我的表在插入和更新方面具有行级策略,如下所示:

create policy "Allow individual insert access" on public.quotes for insert with check ( auth.uid() = created_by );

create policy "Allow individual update access" on public.quotes for update with check ( auth.uid() = created_by );

一旦用户登录,我的插入功能就可以正常工作:

export const addQuote = async (user_id, content) => {
try {
let body = await supabase
  .from("quotes")
  .insert([{ created_by: user_id, content: content }]);
return body;
} catch (error) {
console.log("error", error);
}
};

如果没有行级策略,我的更新功能可以正常工作:

export const updateQuote = async (quote_id, user_id, new_content) => {
try {
let body = await supabase
  .from("quotes")
  .update([{ created_by: user_id, content: new_content }])
  .eq("id", quote_id);
return body;
} catch (error) {
console.log("error in updateQuote", error);
}
};

但是当打开 RLS 时,响应是 404 并且行没有更新。

我在这里想念什么?

4

2 回答 2

1

我将行级策略从with check更改为using,它按预期工作。

create policy "Allow individual update access" on public.quotes for update using( auth.uid() = created_by );

使用检查更新 ---> 使用更新

于 2021-08-13T02:49:42.207 回答
0

你的数据似乎有额外的东西[]。没有它你能试试吗?

let body = await supabase
  .from("quotes")
  .update({ created_by: user_id, content: new_content })
  .eq("id", quote_id);
于 2021-08-09T00:05:19.350 回答