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 将在更新插入期间被覆盖。
我想实现这样的逻辑:
- 对于新记录,默认 isActive 为 true。
- 更新插入时,保持isActive不变。
如何实现这一目标?提前致谢!
最佳答案
将文档转换为对象并删除您不想写入的属性。然后更新插入对象。
this.upsert = function (doc) {
var object = doc.toObject();
delete object.isActive;
self.model.update({userID: object.userID}, object, {upsert: true}, function(err){...});
};
关于javascript - 如何在 Mongoose 中排除 "upsert-ed"字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15009755/