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

使用graphql-yoga开发GraphQL服务时resolver接收的args为undefined如何解决?

问题根因

你写的resolver函数参数顺序错误,GraphQL的resolver固定接收4个顺序参数,分别是:

  • 第一个:parent/root:父解析器的返回值,顶级Query的这个参数一般为undefined或者null
  • 第二个:args:客户端传入的参数集合,你要的name就在这个对象里
  • 第三个:ctx:上下文对象,用来传递全局共享的内容比如数据库连接、用户信息等
  • 第四个:info:包含本次查询的AST相关信息

你现在直接把第一个参数命名为args,实际上接收到的是parent值,自然取不到客户端传的参数。

修复方案

只需要把greeting解析器的参数调整顺序即可,不需要改其他逻辑:

const resolvers={
    Query:{
        // 补上第一个parent参数,用_表示不用的占位参数即可
        greeting:(_, args)=>{
            console.log(args)
            return `Konika said to ${args.name}`
        },
        me:()=>{
            return{
                id:"12345",
                name: "jalmal",
                email: "ja@gmail.com",
                age: null
            }
        },
        post:()=>{
            return{
                id: "12345",
                title:"I am ok with it",
                body:"Why I am failed"
            }
        }
       
    }
}

修复后重新启动服务,再执行你的查询语句就能正常拿到name参数的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:06:03