注册时突变返回 null

Posted

技术标签:

【中文标题】注册时突变返回 null【英文标题】:Mutation return null on signup 【发布时间】:2021-10-09 12:34:05 【问题描述】:

我正在使用 typescript 构建一个带有 graphql、typegraphql 和 typeorm 的 API,并且我的注册突变在我返回用户时返回 null,但它毫无问题地返回错误。 我准确地说,当我使用注册突变时,用户被正确保存在数据库中(我使用 postgres),我可以 console.log 查询结果

注册突变:

@Mutation((_) => UserResponse)
  async signup(
    @Arg('email') email: string,
    @Arg('password') password: string
  ): Promise<UserResponse> 
    const errors = await signupValidation(email, password);

    if (errors.length > 0) 
      return  errors ;
    

    const result = await getConnection()
      .createQueryBuilder()
      .insert()
      .into(User)
      .values([ email, password ])
      .returning('*')
      .execute();
    console.log(result.raw[0])
    return result.raw[0];
  

console.log 的结果

这是我调用突变(没有错误)

这是有错误的结果

【问题讨论】:

【参考方案1】:

您的函数似乎返回一个User 形对象,而不是UserResponse(带有usererrors 属性)。

将代码更改为

return  user: result.raw[0] ;

(也许试着弄清楚为什么 TypeScript 没有抱怨 - result 被键入为 any?)

【讨论】:

谢谢这是正确的答案,我认为打字稿没有抱怨,因为结果也是一个形状相同的对象

以上是关于注册时突变返回 null的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL 在突变时返回 null [重复]

GraphQL 嵌套文档在突变时返回 null

graphiql 突变请求成功但返回 null

当 Graphiql 和 Altair 以完全相同的突变成功时,React Apollo 返回 Null?

删除突变返回 null [重复]

如何从graphql突变返回新记录而不是null