Mongoose findAndUpdate()验证器为null

时间:2016-06-24 17:48:34

标签: mongodb mongoose mongodb-query mongoose-schema nosql

我正在尝试在更新之前对我的架构运行验证,并在此处提供代码。

模式

var workSchema = mongoose.Schema({
location: {
    type: String,
    required: true,
    enum: LOCATIONS
},
flags: {
    isHourly: {
        type: Boolean,
        default: false,
        validate: [workValidators, 'Message']
    }
}
});


function workValidators(flag) {
 if (flag) {
/* WHY IS .this NUll? */
assert(this.location, 'Must have location specified');
}}



workSchema.findByIdAndUpdate(id, {
   $set: info
}, {
   runValidators: true,
   new: true
 }).then((updatedModel) => {
  return updatedModel.toObject();
});
};

1 个答案:

答案 0 :(得分:1)

这是因为验证功能中的THIS具有不同的THIS上下文。这个想法只是针对正在传递的参数提供简单的验证。如果你想要更复杂的东西,可以试试mongoose hooks。