Node.js Mongoose的使用(發現一個新坑)

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章