5

我有一个非常简单的模型,post其中嵌入了几个comments

我想知道我应该如何做一个突变来添加一个新commentpost

由于我已经定义了查询以获取post给定的 a id,因此我想尝试使以下突变语法起作用

mutation {
  post(id: "57334cdcb6d7fb172d4680bb") {
    addComment(data: {
      text: "test comment"
    })
  }
}

但我似乎找不到让它工作的方法。即使我处于突变状态,作为postaddComment 的输出类型也被视为post应具有的字段。

你们有什么想法吗?

谢谢

4

3 回答 3

1

您不能像这样将字段嵌入到其他字段中。

您将为您的后突变创建一个新的输入对象

input CommentInput {
 text: String
}

type Mutation {
 post(id: ID!, addComment: CommentInput): Post
}

在您的解析器中,您查找 addComment 变量并使用参数调用 addComment 解析器。

你的突变将是

mutation {
  post(id: "57334cdcb6d7fb172d4680bb", 
    addComment: {
      text: "test comment"
    }) {
    id
    comment {
      text
    }
  }
}
于 2018-07-11T16:27:57.567 回答
0

我可能是错的,但您可能只想创建一个单独的updatePost突变,它接受帖子 ID 作为参数

type Post {
   comments: [ Comment ]
}

input PostInput {
   comments: [ CommentInput ]
}

type Mutation {
   updatePost( id: ID!, input: PostInput ): Post
}

这里的 updatePost 变异将帖子的 id 和更新的帖子对象作为参数,并返回一个 Post 类型。所以我会这样使用它:

mutation {
  updatePost( id: '1234', input: { comments: []) {
    id
  }
}

希望这可以帮助!

于 2017-06-14T12:51:43.393 回答
0

也许您可以创建addComment将 post id 传递给然后返回 Post 的突变。

type Mutation {
   addComment( postId: ID!, input: CommentInput ): Post
}
于 2017-11-02T12:16:14.743 回答