Reu*_*ose 5 supabase supabase-database
我正在尝试制作一个输入表单,用户可以在其中同时更改一行中的多个值,然后使用该update()方法将其提交到数据库。这些值作为 defaultValues 从 Supabase 表读取到多个输入字段中,用户可以编辑这些值,然后提交表单以更新表的 Supabase 实例中的值。
从用户接收到的输入值存储在具有以下形状的对象中:
inputFields = {
"name": "Piramal Glassed", // NEW
"email": "piramal@glass.com", // NEW
"contact": "98203" // NEW
"pin": 400066,
"city": "Mumbai",
"state": "Maharashtra",
"country": "India",
}
Run Code Online (Sandbox Code Playgroud)
标记为 的值// NEW是用户已更改的值,需要在 Supabase 表的后续行中更新。
我不断收到 400 错误。RLS 目前已禁用。这是我用来将数据发送回 supabase 表的函数。
const { data, error } = await supabase
.from("company")
.update([inputFields.values])
.match([originalFields.values]); // Contains Original Values Of Row That Need To Be Replaced (same shape as inputFields.values)
};
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?
小智 6
看起来你的match过滤器不起作用。
我建议尝试通过 ID 来匹配行,因为您只想更新一行。这样,您实际上正在尝试更新与此数据匹配的所有行,这可能会导致问题。我不确定目前是否可以使用 supabase 进行这样的批量更新。
每当我想更新单行数据时,我都会在应用程序中使用它,并且没有任何问题。如果问题仍然相关,我建议尝试一下。
await supabase.from("company").update(inputFields).match({ id: company.id });
或者
await supabase.from("company").update(inputFields).eq("id", company.id)
您还可以只传递新值,.update()这样就不会更新整行,而只更新已更改的数据。
| 归档时间: |
|
| 查看次数: |
3782 次 |
| 最近记录: |