我正在使用graphql-tools。收到GraphQL查询后,我使用ElasticSearch执行搜索并返回数据。
但是,通常所请求的查询仅包括一些可能的字段,而不是全部。我只想将请求的字段传递给ElasticSearch。首先,我需要获取请求的字段。
我已经可以将整个查询作为字符串获取。例如,在解析器中,
const resolvers = {
Query: {
async user(p, args, context) {
//can print query as following
console.log(context.query)
}
.....
}
}
Run Code Online (Sandbox Code Playgroud)
它打印为
query User { user(id:"111") { id name address } }
Run Code Online (Sandbox Code Playgroud)
有没有办法以以下格式获取请求的字段
{ id:"", name:"", address:"" }
Run Code Online (Sandbox Code Playgroud) 我编写了一个 GraphQL 查询,如下所示:
{
posts {
author {
comments
}
comments
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道如何获取有关posts解析器中请求的子字段的详细信息。
我想这样做是为了避免解析器的嵌套调用。我正在使用 ApolloServer 的DataSourceAPI。
我可以更改 API 服务器以一次获取所有数据。
我正在使用 ApolloServer 2.0,也欢迎任何其他避免嵌套调用的方法。