新发现的一个坑,如果你的Mongoose Model 定义是下面这样的,即为了灵活起见,value 里面没有把属性字段固定下来,那么,
const mongoose = require('mongoose');
const onOffSchema = new mongoose.Schema({
key: String,
value: {}
}, {
timestamps: true,
toObject: {
virtuals: true
},
toJSON: {
virtuals: true
}
});
const OnOff = mongoose.model('OnOff', onOffSchema);
module.exports = OnOff;
当你改变了value 里面的值,比如
"value": {
"taskOn": true,
"lastCheckProjectId": 114694
},
改为了
"value": {
"taskOn": true,
"lastCheckProjectId": 119531
},
那么对不起,这个改动mongoose是发现不了的。如果你调用object.save, 调用成功后,value里面的内容也不会变。
想告知mongoose你的改动怎么办呢? 加个object.markModified('value') 调用就好了。
总体来说,mongoose还是比较偷懒的,model里没有的它完全没处理啊。