1
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将在 upsert 期间被覆盖。

我想实现这样的逻辑:

  1. 对于新记录,默认isActive为 true。
  2. 当做 upsert 时,保持isActive不变。

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

4

1 回答 1

1

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

this.upsert = function (doc) {
    var object = doc.toObject();
    delete object.isActive;

    self.model.update({userID: object.userID}, object, {upsert: true}, function(err){...});
};
于 2013-04-29T14:18:02.967 回答