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

如何在Apollo GraphQL的Mutation Resolver中访问models对象

Apollo Mutation Resolver 获取上下文models对象方案

所有GraphQL Resolver(Query/Mutation/自定义类型字段)的参数顺序是固定的,共4个,顺序不可调整:

  • 第1位:parent,父级字段的返回结果
  • 第2位:args,客户端调用当前字段时传入的参数
  • 第3位:context,服务端初始化时全局注入的上下文对象,你配置的models就存在这个对象上
  • 第4位:info,当前GraphQL请求的语法树元信息,一般业务场景用不到

你拿不到models的核心原因是uploadFile方法只声明了前2个入参,根本没有接收第三个上下文参数,自然读不到挂载在上下文上的models。
另外你之前尝试把models加入Mutation入参列表的思路是错的:models是服务端注入的全局上下文内容,不是客户端通过GraphQL请求传进来的字段参数,不可能从第二个args参数里拿到。

修正后的Resolver代码如下:

export const FileResolver = {
  Upload: GraphQLUpload,
  Mutation: {
    uploadFile: async (parent, { file }, { models }) => {
      // 此处可直接访问models对象,正常调用对应数据模型方法即可
      // 文件上传业务逻辑
    }
  }
}

如果按上述写法修改后依然无法获取models,可排查两个点:

  1. 确认Apollo Server初始化时的context配置正确,确实将models挂载到了上下文返回值上——Query类型Resolver能正常拿到models的话,这一步配置基本不会有问题
  2. 确认当前FileResolver已经正确合并到总resolver配置中,传入了Apollo Server实例初始化参数,不存在导出错误、拼写错误导致Resolver未生效的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:51:45