如何排除字段为";追加销售的";在Mongoose

How to exclude fields from being "upsert-ed" in Mongoose?

本文关键字:quot 追加 Mongoose 何排除 排除 字段      更新时间:2023-09-26
var UserData = function(){
    var self = this;
    this.schema = Schema({
        userID: String,
        firstName: String,
        lastName: String,
        ...
        //many other fields.
        ...
        isActive: {type: "Boolean", default: true}
    },  { collection: 'UserData' });
    this.model = db.model('UserData', self.schema);
    this.upsert = function(object){
        //some logic
        self.model.update({userID: object.userID}, object, {upsert: true}, function(err){...});
    };
}

除了isActive将在追加启动期间被覆盖外,此代码工作正常。

我想实现这样的逻辑:

  1. 对于新记录,默认为活动
  2. 进行追加启动时,保持isActive不变

如何做到这一点?提前感谢!

将文档转换为对象并删除不想写入的属性。然后打乱对象。

this.upsert = function (doc) {
    var object = doc.toObject();
    delete object.isActive;
    self.model.update({userID: object.userID}, object, {upsert: true}, function(err){...});
};