对于具有关系的对象,GraphQL 解析器 return 有什么作用?
What does a GraphQL resolver return for an object with a relation?
如果我有
type Post {
title: String!
body: String!
author: User!
}
type User {
name: String
posts: [Post!]!
}
type Query {
users: [User!]!
}
解析器 users
return 的作用是什么?我知道它可以 return 一个空列表,但是当它 return 是一个填充列表时,我不确定如何处理它。直觉上,在我看来它应该是无限的,因为用户包含他们的帖子列表,每个帖子都包含用户等。显然情况不可能如此,所以 does Query.users
return?
的解析器
解析器 return 仅由您自行决定 return。它不是根据类型自动生成的。它的作用是:它根据你让它解析的内容匹配 object 的类型。
在这种情况下,您的解析器将 return 一个用户列表,每个用户都有一个名称和一个 post 列表,每个 post 都有一个标题,body 和一位作者。
是的,它似乎可以创建无限数据流,但这正是 graph 背后的想法,所有数据都与其关系相关联 vice-versa。
你可以想象 return 数据是这样的:
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 仅 return 提供您向其请求的数据 return。因此,如果您只需要用户和 posts,查询将类似于:
query getUsers {
users {
name
posts {
title
body
}
}
}
在这种情况下,它只会 return 用户和他们的 post,而不是作者。
如果我有
type Post {
title: String!
body: String!
author: User!
}
type User {
name: String
posts: [Post!]!
}
type Query {
users: [User!]!
}
解析器 users
return 的作用是什么?我知道它可以 return 一个空列表,但是当它 return 是一个填充列表时,我不确定如何处理它。直觉上,在我看来它应该是无限的,因为用户包含他们的帖子列表,每个帖子都包含用户等。显然情况不可能如此,所以 does Query.users
return?
解析器 return 仅由您自行决定 return。它不是根据类型自动生成的。它的作用是:它根据你让它解析的内容匹配 object 的类型。
在这种情况下,您的解析器将 return 一个用户列表,每个用户都有一个名称和一个 post 列表,每个 post 都有一个标题,body 和一位作者。
是的,它似乎可以创建无限数据流,但这正是 graph 背后的想法,所有数据都与其关系相关联 vice-versa。
你可以想象 return 数据是这样的:
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 仅 return 提供您向其请求的数据 return。因此,如果您只需要用户和 posts,查询将类似于:
query getUsers {
users {
name
posts {
title
body
}
}
}
在这种情况下,它只会 return 用户和他们的 post,而不是作者。