我是graphql hasura的新手,我遇到了一个问题,即如何更新一个表中的多行,因为通常每个表仅更新一行。
我想以动态方式更新多行
例如,我有现有的行数据。
id: 1, name: 'rosie', age: 12
id: 2, name: 'jane', age: 20
id: 3, name: 'rafaela', age: 25
我只想编辑两行。
id: 1, name: 'rosie update', age: 12
id: 2, name: 'jane update', age: 21
我有很多用户。 可以是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
}
}
预期输出应为:
想以动态方式生成突变代码而不是静态代码。
id: 1, name: 'rosie update', age: 12
id: 2, name: 'jane update', age: 21
id: 3, name: 'rafaela', age: 25
答案 0 :(得分:4)
在阅读文档mutation时,可以使用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
}
}
由于id
值已经存在,它将更新字段name
和age
。