我在 supabase 中创建了一个表,它使用一个 int8 数组(组 ID)来保存用户拥有的组。虽然 supabase 没有办法追加数组,所以我找到了一篇关于制作存储过程的帖子,我试过了,但我无法使用我自己的表。
程序:
create or replace function append_array(new_element int8, id text)
returns void
as
$func$
update "Users"
set "UserGroups" = array_append("UserGroups", $1)
where id = $2
$func$
language sql;
程序调用
async function createGroup() {
const { error } = await supabase
.from('Groups')
.insert({ Members: [session.user.email], Name: groupName, Editors: [session.user.email] })
const { errorupdate } = await supabase
.rpc('append_array', {num: 1000000, email: session.user.email});
if(error) {
alert("Error creating group");
console.log(error);
}
if(errorupdate){
alert("Error updating user info group");
console.log(errorupdate);
}
}
我使用 100000 作为占位符,直到我弄清楚如何使用创建组时生成的主键。虽然当我调用函数时它返回 404 错误作为响应。
请求网址:https://wqamrjqdnsnboscermtz.supabase.co/rest/v1/rpc/append_array 请求方式:POST 状态码:404 远程地址:104.18.27.135:443 推荐人政策:严格起源时交叉来源
https://github.com/orgs/supabase/discussions/2771
我浏览了这个讨论并实施了他们的解决方案,但它没有按照我现在设置的方式工作。我期待 UserGroups 列(int8 数组)被更新为添加到数组中的组号。 在网络编程方面,我仍然是一个初学者,所以任何帮助都会得到很大的帮助。
你的数据库函数参数和rpc调用不匹配。你可以像这样对齐它们。这可能不是唯一错误的地方,但它离使代码正常工作更近了一步。
create or replace function append_array(new_element int8, id uuid)
returns void
as
$func$
update "Users"
set "UserGroups" = array_append("UserGroups", $1)
where id = $2
$func$
language sql;
const { error: errorupdate } = await supabase
.rpc('append_array', {new_element: 1000000, id: session.user.id});