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

时间:2019-06-11 06:58:06

标签: node.js graphql sequelize.js apollo-server

我知道这是一个比较常见的问题,但是我的实现与其他职位有所不同。我正在使用无法上班的最基本的实现。我正在将Sequelize与MySQL一起用作数据库实现。

resolvers.js

>

schema.js

<=

用户模型

:

但是,当运行以下突变时:

  

变异{createUser(name:“ Nate”,电子邮件:“ nate@test.com”){       id}}

我收到:

  

“错误”:[       {         “ message”:“无法为不可为空的字段Mutation.createUser返回null。”,         “位置”:[           {             “行”:2             “栏”:3           }         ],         “路径”:[           “创建用户”         ]

6 个答案:

答案 0 :(得分:0)

我有同样的错误。就我而言,问题是我从@Mutation而非type-graphl导入@nestjs/graphql

答案 1 :(得分:0)

在我的情况下,这是因为createUser调用不是异步的。希望这可以帮助某人:

return await models.User.create({
    name,
    email
})

答案 2 :(得分:0)

此错误是因为您的解析器未返回任何有效的用户对象。只需console.log()createUser解析器即可检查其返回的内容。然后您可以找到问题的原因

答案 3 :(得分:0)

我的回答不会针对这个问题,但我认为它可能对某人有所帮助,因为我自己也遇到过这个问题并且很难找到解决方案。某些键用于 sequelize 中的关联,并且当您打算检索该类型时,应该在 graphql 中使用该键。 例如,Orders 属于 orderStatuses,在我的例子中使用的键是 status,如第 56 行 enter image description here

确切地说,这个 status 应该用在 orders.graphql 类型的 Order 中,如第 12 行所示 enter image description here

答案 4 :(得分:0)

例如,您可以简单地删除 ! 后的字段,例如null

type User {
    id: ID!
    name: String
    email: String
    created_at: DateTime!
    updated_at: DateTime!
}

答案 5 :(得分:0)

就我而言,这是架构中指定的内容与解析器返回的内容之间的类型不匹配:架构指定了单个 User(不正确),但解析器返回了 {{1 }}