如何";“向上插入”;在GraphTool/GraphQL中发出更新时是否存在数组/嵌套字段?
我有一个如何";“向上插入”;在GraphTool/GraphQL中发出更新时是否存在数组/嵌套字段?,graphql,apollo,react-apollo,apollo-client,graphcool,Graphql,Apollo,React Apollo,Apollo Client,Graphcool,我有一个Post类型,而不是一个tag字段,它可以与许多tag条目相关联(人与人之间的关系)。我遇到的问题是更新Post-我需要为尚未存在的标记创建并关联新的标记,同时保留现有的Post->标记关系。基本上,我所寻找的是类似于在嵌套的一对多字段上发出突变更新时的upsert 这是我的模式: type Post @model { createdAt: DateTime! createdBy: User @relation(name: "PostsByUser") description
Post
类型,而不是一个tag
字段,它可以与许多tag
条目相关联(人与人之间的关系)。我遇到的问题是更新Post
-我需要为尚未存在的标记创建并关联新的标记,同时保留现有的Post
->标记关系。基本上,我所寻找的是类似于在嵌套的一对多字段上发出突变更新时的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
的标记
字段中的所有现有值:
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
}
}
}
我遇到过,但不清楚如何实现他概述的组合方法:
组合
您还可以在同一个变体中使用标记和tagsid,这会将新教程节点连接到tagsid中的所有标记,并将其连接到tags中的新标记。如果只允许带有唯一文本的标记,则需要执行此操作,因此对于新教程,可能存在一些已经存在的标记,并且需要创建一些标记
目前是不是一个突变就不可能做到这一点?在用新标签更新post后是否需要第二次突变,以重新建立post
和现有Tag
ID之间的关联,即必须反复调用addtotagsofspost(tagsTagId:ID!
postsPostId:ID!)
?谢谢 好的,因此将标记
和tagsIds
传递到突变将创建并关联新创建的标记
,但不会将标记
关联添加到现有的标记
。我在Graphcool的GitHub回购上发布了一个问题,他们已经承认了-