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

使用graphql-js的parse方法无法填充variableDefinitions字段的问题

问题解答:graphql-js parse后variableDefinitions为空数组的原因

你忽略了GraphQL的变量声明规则:所有在查询中使用的变量,必须在操作定义的开头显式声明类型,才会被纳入variableDefinitions字段。

你的示例查询{ x(id: $id) { id } }属于匿名无变量声明的查询——虽然在字段参数里用到了$id,但没有在操作层面定义这个变量的类型,所以graphql-js的parse方法只会把$id识别为单个Variable节点(出现在arguments的value中),不会将其加入variableDefinitions数组。

要让$id被纳入variableDefinitions,必须修改查询语句,显式声明变量及其类型,示例如下:

query($id: ID!) {
  x(id: $id) { id }
}

此时调用parse方法,variableDefinitions字段就会包含对应的变量定义结构:

{
  "kind": "VariableDefinition",
  "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } },
  "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "ID" } } },
  "directives": []
}

总结:GraphQL遵循"变量先声明后使用"的规则,未在操作开头声明的变量,仅会作为语法节点存在,不会被归类到操作的variableDefinitions中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:45:22