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

向GraphQL查询传入ID变量无法返回数据的问题排查

问题排查与解决

你的问题出在两个关键细节上:

1. 解析器参数获取错误

GraphQL解析器函数的参数顺序是 (parent, args, context, info),你直接把第一个参数当作传入的id,但实际上第一个参数是父对象(此处Query的父对象为空),查询定义的参数都封装在第二个参数args里。

2. 返回值类型不匹配

你用filter方法返回的是数组,但你的Query定义single_research(id: ID!): Research!要求返回单个Research对象。数组本身没有title、id等字段,导致GraphQL解析时无法读取非空的title字段,进而抛出Cannot return null for non-nullable field Research.title错误。

修正后的解析器代码

const resolvers = {
    Query: {
      single_research: (_, args) => {
        // 用find获取单个匹配对象,替代filter返回的数组
        const researchItem = research.find(item => item.id === args.id);
        // 处理未找到匹配项的情况,避免返回null违反非空约束
        if (!researchItem) {
          throw new Error(`Research with ID ${args.id} does not exist`);
        }
        return researchItem;
      }
    },
};

关键说明

  • 用_占位第一个参数(不需要父对象时的惯例写法),通过args.id正确获取传入的查询参数
  • 替换filter为find,返回单个匹配的对象,完全符合Schema定义的返回类型
  • 增加未找到时的错误抛出逻辑,避免返回null触发新的非空字段错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:42:55