如何知道在GraphQL查询中请求了哪些字段?
我编写了一个GraphQL查询,如下所示:如何知道在GraphQL查询中请求了哪些字段?,graphql,apollo,apollo-server,resolver,Graphql,Apollo,Apollo Server,Resolver,我编写了一个GraphQL查询,如下所示: { posts { author { comments } comments } } 我想知道如何获得posts解析器中请求的子字段的详细信息 我想这样做是为了避免冲突解决程序的嵌套调用。我正在使用ApolloServer的DataSourceAPI 我可以更改API服务器以一次获取所有数据 我使用的是ApolloServer 2.0,任何其他避免嵌套调用的方法都是受欢迎的。这里有几个要点,您可以用来优化查
{
posts {
author {
comments
}
comments
}
}
我想知道如何获得posts
解析器中请求的子字段的详细信息
我想这样做是为了避免冲突解决程序的嵌套调用。我正在使用ApolloServer的DataSource
API
我可以更改API服务器以一次获取所有数据
我使用的是ApolloServer 2.0,任何其他避免嵌套调用的方法都是受欢迎的。这里有几个要点,您可以用来优化查询以提高性能
这里有两个要点,可用于优化查询以提高性能
您需要解析作为第四个参数传递给解析器的
info
对象。这是对象的类型:
type GraphQLResolveInfo = {
fieldName: string,
fieldNodes: Array<Field>,
returnType: GraphQLOutputType,
parentType: GraphQLCompositeType,
schema: GraphQLSchema,
fragments: { [fragmentName: string]: FragmentDefinition },
rootValue: any,
operation: OperationDefinition,
variableValues: { [variableName: string]: any },
}
这将沿以下几行记录对象:
{
alias: 'posts',
name: 'posts',
args: {},
fieldsByTypeName: {
Post: {
author: {
alias: 'author',
name: 'author',
args: {},
fieldsByTypeName: ...
}
comments: {
alias: 'comments',
name: 'comments',
args: {},
fieldsByTypeName: ...
}
}
}
}
您可以遍历结果对象并相应地构造SQL查询(或一组API请求,或其他任何内容)。您需要解析作为第四个参数传递给解析程序的
info
对象。这是对象的类型:
type GraphQLResolveInfo = {
fieldName: string,
fieldNodes: Array<Field>,
returnType: GraphQLOutputType,
parentType: GraphQLCompositeType,
schema: GraphQLSchema,
fragments: { [fragmentName: string]: FragmentDefinition },
rootValue: any,
operation: OperationDefinition,
variableValues: { [variableName: string]: any },
}
这将沿以下几行记录对象:
{
alias: 'posts',
name: 'posts',
args: {},
fieldsByTypeName: {
Post: {
author: {
alias: 'author',
name: 'author',
args: {},
fieldsByTypeName: ...
}
comments: {
alias: 'comments',
name: 'comments',
args: {},
fieldsByTypeName: ...
}
}
}
}
您可以遍历结果对象并构造SQL查询(或一组API请求,或其他任何内容)因此。这正是我所要找的。的作者还建议使用
graphql parse resolve info
继续前进。这正是我所要找的。的作者还建议使用graphql parse resolve info
继续前进。这基本上是一个重复,这基本上是一个重复属于