如何获取所有graphql模式查询、变异、订阅

问题描述

我正在使用带有 graphql 和 graphql-compose 的 nodejs 所以我将方案定义为

schemaComposer.Query.addFields({
  Me: MyResolvers,Info: MyInfoResolvers,Post: PostResolvers
})

schemaComposer.Mutation.addFields({
    Login: MyLoginResolvers,Register: RegisterResolvers
})

schemaComposer.Subscription.addFields({
    Subscribe: Mysubscribe
})

所以任何获取所有查询、变异和订阅列表数组的函数 例如我需要打印到

[
  { operator: "Me",name: "Query" }
  { operator: "Info",name: "Query" }
  { operator: "Post",name: "Query" }
  { operator: "Login",name: "Mutation" }
  { operator: "Register",name: "Mutation" }
  { operator: "Subscribe",name: "Subscription" }
]


or Object is best
{
   Query: ["Me","Info","Post"],Mutation: ["Login","Register"],Subscription: ["Subscribe"]
}

我可以使用 graphql 库中的 parse 函数解析请求中的查询以获取操作符和名称

import { parse } from "graphql"



const query:any = parse(context.req.body?.query)
const operator = query.definitions[0]?.operation
const name = query.definitions[0]?.selectionSet?.selections[0]?.name?.value

现在我需要在模式中列出所有定义的查询、变异、订阅?有可能吗?

谢谢

解决方法

您可以尝试保持自省。 [docs]

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...