我是 graphql hasura 的新手,我遇到了如何更新一个表中的多行的问题,因为通常我只更新每个表的一行。
我想以动态方式更新多行
例如,我有现有的行数据。
id: 1, name: 'rosie', age: 12
id: 2, name: 'jane', age: 20
id: 3, name: 'rafaela', age: 25
Run Code Online (Sandbox Code Playgroud)
我只想编辑 2 行。
id: 1, name: 'rosie update', age: 12
id: 2, name: 'jane update', age: 21
Run Code Online (Sandbox Code Playgroud)
我有一系列用户。可以是 1 个或 1 个以上的用户将被更新。
const users = [
{id: 1, name: 'rosie update', age: 12}.
{id: 2, name: 'jane update', age: 21}
];
mutation update_article {
update_user(
where: {id: {_eq: users[0].id}},
_set: {
name: users[0].name,
age: users[0].age
}
) {
affected_rows
}
}
Run Code Online (Sandbox Code Playgroud)
预期输出应该是:
想要以动态方式而不是静态方式拥有突变代码。
id: 1, name: 'rosie update', age: 12
id: 2, name: 'jane update', age: 21
id: 3, name: 'rafaela', age: 25
Run Code Online (Sandbox Code Playgroud)
mpr*_*net 10
阅读文档突变,你可以使用insert,而不是update能够处理多个管理对象的冲突行为。
在您的示例中,可以通过以下方式完成突变:
mutation update_article {
insert_user(objects: [
{id: 1, name: "rosie update", age: 12},
{id: 2, name: "jane update", age: 21}
],
on_conflict: {
constraint: user_id_key,
update_columns: [name, age]
}
) {
affected_rows
}
}
Run Code Online (Sandbox Code Playgroud)
由于id值已经存在,它将更新字段name和age。
在不同条件下运行多个更新(V2.10.0)
mutation update_many_articles {
update_article_many (
updates: [
{
where: {rating: {_lte: 1}},
_set: {is_published: false}
},
{
where: {rating: {_gte: 4}},
_set: {is_published: true}
}
]
) {
affected_rows
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3319 次 |
| 最近记录: |