GraphQL解析器为具有关系的对象返回什么?
如果我有GraphQL解析器为具有关系的对象返回什么?,graphql,resolver,Graphql,Resolver,如果我有 type Post { title: String! body: String! author: User! } type User { name: String posts: [Post!]! } type Query { users: [User!]! } 解析程序用户返回什么?我知道它可以返回一个空列表,但当它返回一个填充的列表时,我不知道如何处理它。直观地说,在我看来,它应该是无限的,因为用户包含他们的帖子列表,每个帖子都包含用户,等等。显然,这不可能
type Post {
title: String!
body: String!
author: User!
}
type User {
name: String
posts: [Post!]!
}
type Query {
users: [User!]!
}
解析程序
用户返回什么?我知道它可以返回一个空列表,但当它返回一个填充的列表时,我不知道如何处理它。直观地说,在我看来,它应该是无限的,因为用户包含他们的帖子列表,每个帖子都包含用户,等等。显然,这不可能是这样的,那么查询的解析器返回什么?用户返回什么?解析器只返回您让它返回的内容。它不是根据类型自动生成的。它所做的是:它根据您使其解析的内容匹配对象的类型
在这种情况下,解析器将返回一个用户列表,每个用户都有一个名称和一个帖子列表,每个帖子都有一个标题、正文和作者
是的,它似乎可以创建一个无限的数据流,但这正是背后的想法,所有数据都与它的关系相连,反之亦然
您可以想象返回数据如下所示:
data: {
users: [
{
name: "user 1",
posts: [
{
title: "post 1",
body: "post body",
author: {
name: "user 1",
posts: [
{
title: "post 1",
body: "post body",
author: {
name: "user 1",
posts: [
{
.....
}
]
}
}
]
}
}
]
},
{
name: "user 2",
posts: [
{
title: "post 2",
body: "post body",
author: {
name: "user 2",
posts: [
{
title: "post 2",
body: "post body",
author: {
name: "user 2",
posts: [
{
.....
}
]
}
}
]
}
}
]
}
]
}
同样,GraphQL只返回您要求它返回的数据。因此,如果您只需要用户和帖子,则查询如下:
query getUsers {
users {
name
posts {
title
body
}
}
}
在这种情况下,它将只返回用户及其帖子,而不返回作者。谢谢。现在我回顾一下文档,发现在示例中,总是将info
参数传递给ORM,这很有意义。