新發現的一個坑,如果你的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裏沒有的它完全沒處理啊。