2

我有一个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和现有Tagid 之间的关联后,是否需要进行第二次突变,即必须重复调用addToTagsOfPost(tagsTagId: ID! postsPostId: ID!)?谢谢!

4

1 回答 1

1

好的,所以目前有一个 Graphcool 错误,其中传入tags和传递tagsIds到突变将创建并关联新创建 Tags的,但不会将tagsIds关联添加到现有的 Tags. 我在 Graphcool 的 GitHub 存储库上发布了一个问题,他们已经承认了 - https://github.com/graphcool/framework/issues/1288

于 2017-11-20T17:41:21.943 回答