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

使用express-graphql时GraphQL查询无法触发Resolver的问题

问题分析与解决

核心问题1:Resolver参数签名错误

你的createTask resolver参数写法错误,导致无法正确获取传入的task参数:

// 错误写法
createTask: async ({ task }) => { ... }

// 正确写法
createTask: async (_, { task }) => { ... }

express-graphql中Resolver函数的参数顺序为:root(父级对象)、args(查询参数)、context、info。你把第一个参数root当成了参数对象,导致task始终为undefined,后续代码执行出错后返回null,触发Cannot return null for non-nullable field Mutation.createTask错误,同时你写的console.log('Request received in resolver')也不会执行。

核心问题2:updateTask返回值不符合Schema定义

Schema中updateTask定义返回Task!类型,但Resolver返回的是包含status、message、task的复合对象,和Schema定义的结构完全不匹配:

// 错误返回
return {
  status: result.status,
  message: result.message,
  task: result.task,
};

// 正确返回(直接返回Task对象)
return result.task;

这种结构不匹配会导致GraphQL无法解析出符合要求的返回值,同样会触发非空字段错误。

额外检查点

  • 确认TaskService.addTask方法返回的对象包含id、title、description、tags、done所有Schema定义的字段,缺少任何非空字段都会导致返回错误。
  • 检查Postman请求配置:确保请求方法为POST,Content-Type设置为application/json,请求体正确携带GraphQL查询内容。

修改后的createTask和updateTask resolver示例:

Mutation: {
  createTask: async (_, { task }) => {
    console.log('Request received in resolver');
    try {
      const { title, description, tags } = task;
      const result = await taskService.addTask(title, description, tags);
      console.log(result);
      // 确保result包含Task的所有字段
      return result;
    } catch (err) {
      console.error('Error while creating task: ', err);
      throw new Error(err.message || 'Internal server error');
    }
  },

  updateTask: async (_, { id, task }) => {
    console.log('Request received in resolver');
    try {
      const { title, description, tags, done } = task;
      const result = await taskService.updateTask(
        id,
        title,
        description,
        tags,
        done
      );
      // 返回符合Task类型的对象
      return result.task;
    } catch (err) {
      console.error('Error while updating task: ', err);
      throw new Error(err.message || 'Internal server error');
    }
  },
}

内容的提问来源于stack exchange,提问作者Анна Некрасова

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 09:40:53