Nest JS GraphQL“不能为非空返回null” [重复]

Posted

技术标签:

【中文标题】Nest JS GraphQL“不能为非空返回null” [重复]【英文标题】:Nest JS GraphQL “Cannot return null for non-nullable” [duplicate] 【发布时间】:2020-01-28 03:42:32 【问题描述】:

我尝试解决学习代码中的一个错误,但失败了。然后我只是尝试启动此代码...

https://github.com/nestjs/nest/tree/master/sample/23-type-graphql

同样的情况……

错误看起来像


  "errors": [
    
      "message": "Cannot return null for non-nullable field Recipe.id.",
      "locations": [
        
          "line": 3,
          "column": 5
        
      ],
      "path": [
        "recipe",
        "id"
      ],
      "extensions": 
        "code": "INTERNAL_SERVER_ERROR",
        "exception": 
          "stacktrace": [
            "Error: Cannot return null for non-nullable field Recipe.id.",
            "    at completeValue (/home/innistry/Downloads/nest-master/sample/23-type-graphql/node_modules/graphql/execution/execute.js:560:13)",
            "    at /home/innistry/Downloads/nest-master/sample/23-type-graphql/node_modules/graphql/execution/execute.js:492:16",
            "    at process._tickCallback (internal/process/next_tick.js:68:7)"
          ]
        
      
    
  ],
  "data": null

有人有想法吗?

【问题讨论】:

如果您遇到同样的问题并像我一样访问了此页面,我在此页面上添加了答案。 ***.com/questions/56319137/…我无法在此页面上添加答案,因为此问题被标记为重复问题。 【参考方案1】:

这是最快的修复,刚刚启动。

import  Field, ID, ObjectType  from 'type-graphql';

@ObjectType()
export class Recipe 
  @Field(type => ID,  nullable: true )
  id?: string;

  @Field( nullable: true )
  title?: string;

  @Field( nullable: true )
  description?: string;

  @Field( nullable: true )
  creationDate?: Date;

  @Field(type => [String],  nullable: true )
  ingredients?: string[];


【讨论】:

不是解决问题的好方法。应该有意使该字段为空,而不是绕过错误。 我收到了完全相同的错误消息。发生这种情况是因为我在测试中使用了部分夹具,而我没有填写实体中的所有必要字段。人们应该寻找这种滥用而不是这种快速修复解决方法。

以上是关于Nest JS GraphQL“不能为非空返回null” [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将firebase时间戳与graphql nest js一起使用?

如何在没有守卫装饰器的情况下始终验证 JWT? (Nest.js + 护照)

Angular / Nest / GraphQL - 无法上传文件(400 错误请求或 500)

Nest JS DTO 和实体模型 JSON 不匹配问题

Nest JS / MongoDB - 地理空间索引在部署的服务器上不起作用

Schema Generator 无法确定 DTO 中自定义对象的 GraphQL 输出类型