我试图了解graphql的查询和变异语法。给出以下示例:
type Author {
id: Int!
firstName: String
lastName: String
posts: [Post]
}
type Post {
id: Int!
title: String
author: Author
votes: Int
}
type Query {
posts: [Post]
author(id: Int!): Author
}
查询应该如何将帖子与作者关联起来?这是联系发挥作用的地方还是其他地方?这是我尝试解决问题但尝试的尝试。
mutation createAuthor {
createAuthor(input: {
id: 123
firstName: "Bob"
lastName: "Smith"
}) {
id
firstName
lastName
}
}
query listAuthors {
listAuthors {
items {
id
firstName
lastName
}
}
}
mutation createPost {
createPost(input: {
id: 12345
title: "Title"
votes: 345
author: {
lastName: {
contains: "Bob"
}
}
}) {
id
title
votes
author {
id
firstName
lastName
}
}
}
在此方面的任何帮助将不胜感激。我的目标是查询作者,并返回与该作者相关的所有帖子,并创建一个Post Mutation,将帖子添加到作者。
答案 0 :(得分:1)
一个问题有两个,所以我将按照被问到的顺序回答。
1。返回与作者相关的所有帖子
您的架构看起来正确。查询如下:
query {
author(id: 1) {
id
posts {
id
title
}
}
}
2。创建帖子并附加到作者
在您的示例中,如果您想公开一个接口来创建一个Post,那么您将不得不在您的模式中公开一个mutation字段
例如:
type Mutation {
createPost(input: CreatePostInput): Post
}
如果您希望同时创建帖子,并且也将其附加到作者,则可以在输入中添加authorId
作为输入的一部分,这里我们只想将帖子附加到现有作者:
input CreatePostInput {
title: String
authorId: ID!
votes: Int
}
当然,这只是接口定义。我们实际上需要创建Post并将其链接到解析器内部的Author。
变异查询如下:
mutation createPost {
createPost(input: {
title: "Title"
votes: 345
authorId: "authorId1"
}) {
id
title
votes
author {
id
firstName
lastName
}
}
}
希望有帮助!