错误:不能为不可为空的 postgres 返回 null

Posted

技术标签:

【中文标题】错误:不能为不可为空的 postgres 返回 null【英文标题】:Error: Cannot return null for non-nullable postgress 【发布时间】:2021-05-11 02:16:12 【问题描述】:
 @Query(() => Post,  nullable: true )
  async post(
    @Arg("id", () => Int) id: number
  ): Promise<Post | undefined | null> 
    return await Post.findOne( id );
  

我有这个运行良好并返回所需输出的查询。但是当我将其转换为 postgres sql 时,它没有显示错误。

@Query(() => Post,  nullable: true )
  async post(
    @Arg("id", () => Int) id: number
  ): Promise<Post | undefined | null> 
    
    const posts = await getConnection().query(
      `
          SELECT * FROM post where id = 2
          
        `
    );

    return posts
  

它抛出错误Error: Cannot return null for non-nullable

我是 postgres 的新手。什么错误?

【问题讨论】:

【参考方案1】:

问题在于,在第一个示例中,TypeORM 将返回一个帖子或 null。在第二个示例中,它将返回一个包含或不包含某些内容的数组。我建议您对查询设置一个限制

SELECT * FROM post where id = 2 limit 1

并返回结果数组中的第一个元素(返回帖子[0])。

【讨论】:

以上是关于错误:不能为不可为空的 postgres 返回 null的主要内容,如果未能解决你的问题,请参考以下文章

Schema graphql 错误给出“不能为不可为空的字段 Organisation.id 返回 null”为啥?

AWS放大graphql突变:不能为不可为空的字段返回null

Gatsby graphiQL - 不能为不可为空的字段 ImageSharpFluid.src 返回 null

Apollo GraphQL“不能为不可为空的字段 Mutation.createUser 返回 null”

使用 Graphql 在 NestJS 上订阅时,“不能为不可为空的字段返回 null”

错误:主体可能正常完成,导致返回“null”,但返回类型是不可为空的类型