繁体   English   中英

在 graphql 中更新/编辑用户数据(不能为不可空字段 Mutation.updateUser 返回 null)

[英]Updating/editing user data in graphql(Cannot return null for non-nullable field Mutation.updateUser)

所以我希望用户能够在 graphql 中编辑他的数据(在本例中为电子邮件),但我收到“无法为不可空字段 Mutation.updateUser 返回 null”错误,我不知道出了什么问题

我的定义:

    type Mutation{
        updateUser(id: ID!  email: String!): User!
    }
type User{
        id: ID!
        email: String!
        token: String!
        createdAt: String!
        username: String!
        bio: String,
    

    }

代码:

module.exports = {
    Mutation: {
      async updateUser(parent, args) {
        return User.findOneAndUpdate({ id: args.id }, { email: args.email }, { new: true })
      }
    }
}

用户架构:

const userSchema = new Schema({
    username: String,
    password: String,
    email: String,
    createdAt: String,
    bio: String,
    
});

像这样定义您的架构。 假设您需要将bio字段设为nullable = true ,只需将其设为required = false 它会解决你的问题。

 const userSchema = new Schema({
    username:  {type: String, required: true},
    password:  {type: String, required: true},
    email:  {type: String, required: true},
    bio:  {type: String, required: false},
}, {timestamps: true});

此外,为了更好的代码实践,在您的架构中使用{timestamps: true}它将自动生成您的createdAtupdatedAT列您无需显式定义这些列。 这些列将自动生成和更新。

您可以更新架构,以便突变可以返回 null 而不会引发错误。

type Mutation{
    updateUser(id: ID!, email: String!): User
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM