findByIdAndUpdate $set 不检查唯一性?

Nam*_*yen 4 javascript mongoose node.js

我有一个架构并指定登录是唯一的是真的。当我使用findByIdAndUpdate,并通过查询$集更新的用户对象,但它并不能登录时是DUP扔回去错误。有谁知道为什么以及如何更新对象并强制模式验证?

谢谢!

// UserSchema.js
var schema = new Schema({
  login: {
    required: true,
    unique: true
  },
  password: {
    index: true,
    type: String
  }
});


// Update
UserSchema.findByIdAndUpdate('someID', { '$set': { login: 'abc' } }, function (error, user) {
    callback(error, user);
});
Run Code Online (Sandbox Code Playgroud)

小智 5

您只需将 runValidators 设置为 true:

findByIdAndUpdate(req.params.id, {$set: data}, {runValidators: true}, function (err, doc) {
    if (err) {
        // Handle validation errors
    }
})
Run Code Online (Sandbox Code Playgroud)

更多信息:http : //mongoosejs.com/docs/api.html#findOneAndUpdate