我有Post
类型而不是tag
字段,可以与许多Tag
条目相关联(人与人之间的关系)。我遇到的问题是更新Post
时 - 我需要为尚不存在的标记创建和关联新的Tag
,同时保留现有的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")
}
此突变可用于更新Post
并添加新标记,但会覆盖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
}
}
}
我this post遇到@marktani,但不清楚如何实现他概述的组合方法:
联合 您还可以在同一个变异中使用标签和标签ID,这会将新的Tutorial节点连接到tagsIds中的所有标签,并将其连接到标签中的新标签。如果您只想允许带有唯一文本的标签,这就是您要执行的操作,因此对于新的教程,可能会存在一些已存在的标记,以及一些需要创建的标记。
目前不可能通过一个突变来做到这一点吗?在使用新标签更新帖子以重新建立Post
和现有Tag
ID之间的关联后,是否需要第二次突变,即必须重复调用addToTagsOfPost(tagsTagId: ID!
postsPostId: ID!)
?谢谢!
答案 0 :(得分:1)
好的,there is currently a Graphcool bug将tags
和tagsIds
传递给突变会创建并关联新创建的 Tags
但不会将tagsIds
关联添加到现有 Tags
。我在Graphcool的GitHub回购中发布了一个问题,他们已经承认了它 - https://github.com/graphcool/framework/issues/1288