You need to enable JavaScript to run this app. express-graphql如何将自定义变量挂载到GraphQL context
优惠活动
大模型
产品
解决方案
定价
更多

express-graphql如何将自定义变量挂载到GraphQL context

问题原因

你遇到的问题由两个核心点导致:

  1. Resolver参数顺序错误:你使用graphql包原生的buildSchema构建Schema,这种场景下Root resolver的参数顺序为 (请求参数args, 自定义上下文context, 执行信息info),没有首参数parent。你当前代码里把第三个参数info(也就是你打印出来的那一大坨执行相关数据)当成了自定义context,实际自定义context是第二个参数。
  2. 你之前的理解有误:variableValues对应客户端传递的GraphQL查询变量,和你自定义的context没有关联,自定义参数不会出现在这个字段里。

解决步骤

1. 调整Resolver参数

修改你的get_number resolver,取第二个参数作为context即可:

get_number(_, context) {
 console.log(context); // 这里输出的就是{someValue: 100}
 return context.someValue;
}

2. (可选优化)调整context传入方式

express-graphql推荐用回调函数的方式返回配置,后续如果需要挂载请求相关的参数(比如请求头里的用户身份信息)到context会更方便:

app.use(graphqlHTTP((req, res) => ({
  schema: schema,
  rootValue: resolver,
  graphiql: true,
  context: {someValue: 100}
})))

修改完成后重新启动服务即可正常拿到context里的参数。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 16:45:01