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

调用GraphQL接口时出现‘Cannot return null for non-nullable field Task.id’错误

问题解决:Cannot return null for non-nullable field Task.id

核心问题

你的GraphQL查询解析器返回类型定义错误:@Query(() => Task) 声明返回单个Task对象,但实际代码返回的是Task[]数组类型,导致GraphQL无法正确匹配字段,进而抛出非空字段id为null的错误。

修复方案

修改解析器的@Query装饰器,将返回类型改为数组:

@Query(() => [Task]) // 改为数组类型
async tasks(@Args() findManyTaskArgs: FindManyTaskArgs): Promise<Task[]> {
  return this.taskService.findMany(findManyTaskArgs.where);
}

原因解释

  1. 你的查询tasks请求的是任务列表,期望返回数组类型
  2. 原解析器声明返回单个Task,GraphQL会尝试从返回的数组中读取单个对象的id字段,无法匹配后触发非空校验错误
  3. 其他接口正常是因为它们的返回类型和实际返回值匹配,不存在类型不兼容问题

额外验证(可选)

如果修改后仍有问题,可以检查:

  • 数据库中匹配userId的任务记录是否确实存在非空的id字段
  • Prisma客户端的Task模型是否正确映射数据库表字段,确保id为非空字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:45:10