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里没有的它完全没处理啊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值