我使用 Hasura,我有类似社交网络的情况。其中我有一个“用户”对象和一个“提要”对象。每个用户都有一个提要。user.id
我从到有关系feed.id
。
相关突变UpsertUserDetails
如下:
mutation UserDetailsUpsert(
$email: String!
$picture: String
) {
insert_users_one(
object: {
email: $email
feed: { data: {} }
picture: $picture
}
on_conflict: { constraint: users_tid_email_key, update_columns: [picture] }
) {
id
}
}
所以当我创建一个新用户时,它也会为它创建一个提要。
但是当我只更新用户详细信息时,我不希望它创建新的提要。我想阻止 upsert 进入关系而不是上述默认行为。
根据本手册,我看不出它是否可能:https ://hasura.io/docs/latest/graphql/core/databases/postgres/mutations/upsert.html#upsert-in-nested-mutations
要允许在嵌套情况下进行更新插入,请设置 update_columns: []。通过这样做,在发生冲突的情况下,冲突的列将被更新为新值(这与它们之前的值相同,因此将有效地保持它们不变)并允许 upsert 通过。
谢谢!