gpt4 book ai didi

graphql - 如何在 GraphQL 解析器中获取请求的字段?

转载 作者:行者123 更新时间:2023-12-04 05:16:29 30 4
gpt4 key购买 nike

我正在使用 graphql-tools .收到 GraphQL 查询后,我使用 ElasticSearch 执行搜索并返回数据。

但是,通常所请求的查询仅包括少数可能的字段,而不是全部。我只想将请求的字段传递给 ElasticSearch。
首先,我需要获取请求的字段。

我已经可以将整个查询作为字符串获取。例如,在解析器中,

const resolvers = {
Query: {
async user(p, args, context) {
//can print query as following
console.log(context.query)
}
.....
}
}

它打印为
query User { user(id:"111") { id  name address } }

有没有办法以类似的格式获取请求的字段
{ id:"",  name:"", address:"" }

最佳答案

在 graphql-js 解析器中公开了第四个参数,称为解析信息。此字段包含有关该字段的更多信息。

来自 GraphQL docs GraphQLObjectType配置参数类型定义:

// See below about resolver functions.
type GraphQLFieldResolveFn = (
source?: any,
args?: {[argName: string]: any},
context?: any,
info?: GraphQLResolveInfo
) => any

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 },
}

fieldNodes您可以搜索您的领域并获得 selectionSet对于特定领域。从这里开始变得棘手,因为 selections可以是普通的字段选择、片段或内联片段。您必须合并所有这些才能知道在一个字段上选择的所有字段。

关于graphql - 如何在 GraphQL 解析器中获取请求的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48004805/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com