You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js使用graphql-compose时如何获取所有Query、Mutation与Subscription列表

解决方案

你可以直接通过graphql-compose提供的原生API获取所有根操作字段,不需要解析请求query,具体实现如下:

场景1:直接从schemaComposer实例获取(推荐)

schemaComposer上挂载的Query、Mutation、Subscription都是ObjectTypeComposer实例,调用getFieldNames()方法就能直接拿到该类型下所有已注册的字段名:

// 生成你需要的对象格式
const operationMap = {
  Query: schemaComposer.Query.getFieldNames(),
  Mutation: schemaComposer.Mutation.getFieldNames(),
  Subscription: schemaComposer.Subscription.getFieldNames()
}

// 如果需要数组格式,直接遍历转换即可
const operationList = Object.entries(operationMap).flatMap(([opType, opFields]) => {
  return opFields.map(field => ({
    operator: field,
    name: opType
  }))
})

场景2:已生成标准GraphQLSchema实例

如果你已经调用schemaComposer.buildSchema()生成了标准GraphQL Schema实例,可以用graphql官方API获取:

const schema = schemaComposer.buildSchema()

const operationMap = {
  Query: Object.keys(schema.getQueryType()?.getFields() || {}),
  Mutation: Object.keys(schema.getMutationType()?.getFields() || {}),
  Subscription: Object.keys(schema.getSubscriptionType()?.getFields() || {})
}

注:代码中的可选链和空值 fallback 是为了兼容未定义对应根操作的场景,避免运行时报错。

内容的提问来源于stack exchange,提问作者Peter Jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 05:54:05