我有一个Post
类型,而不是一个tag
可以与许多Tag
条目相关联的字段(一对多关系)。我遇到的问题是在更新 a 时Post
- 我需要为Tag
尚不存在的标签创建和关联 new ,同时保留现有的Post
->Tag
关系。基本上,我正在寻找类似于upsert
在嵌套的一对多字段上发布突变更新时的东西。
这是我的架构:
type Post @model {
createdAt: DateTime!
createdBy: User @relation(name: "PostsByUser")
description: String @defaultValue(value: "''")
id: ID! @isUnique
tags: [Tag!]! @relation(name: "TagsOfPost")
...
}
type Tag @model {
id: ID! @isUnique
tag: String!
createdBy: User @relation(name: "TagsByUser")
createdAt: DateTime!
posts: [Post!]! @relation(name: "TagsOfPost")
}
此突变用于更新 aPost
并添加新Post
标签,但会覆盖'tag
字段中的所有现有值:
mutation updatePost(
$id: ID!
$createdById: ID!
$timestamp: DateTime!
$description: String
$tags: [PosttagsTag!]!
) {
updatePost(
id: $id
createdById: $createdById
timestamp: $timestamp
description: $description
tags: $tags
) {
id
timestamp
description
tags {
id
tag
}
createdBy {
id
username
}
}
}
我遇到了@marktani的这篇文章,但不清楚如何实现他概述的组合方法:
组合 您还可以在同一个突变中使用标签和标签标识,这会将新的教程节点连接到标签标识中的所有标签,并将其连接到标签中的新标签。如果您只想允许带有唯一文本的标签,这就是您想要做的,因此对于新教程,可能会有一些标签已经存在,而一些标签需要创建。
目前是否不可能用一个突变来做到这一点?在使用新标签更新帖子以重新建立idPost
和现有Tag
id 之间的关联后,是否需要进行第二次突变,即必须重复调用addToTagsOfPost(tagsTagId: ID!
postsPostId: ID!)
?谢谢!