如何";“向上插入”;在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回购上发布了一个问题,他们已经承认了-