javascript - 如何在 Mongoose 中排除 "upsert-ed"字段?

标签 javascript node.js mongoose upsert

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. 对于新记录,默认 isActive 为 true。
  2. 更新插入时,保持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/

相关文章:

mongodb - express app nodejs 和 mongoose db/mongodb 入门

node.js - 使用 mongoose 从 MongoDB Atlas 获取示例数据

javascript - 将数组拆分为二维数组 : Is There a Better Solution?

javascript - -- Node v4.x 中的 prof?

node.js - Nodejs网络发送json?

node.js - 如何在 Puppeteer 中获取所有请求 header

node.js - 蒙戈 : Storing user-specific data for a document

javascript - 需要在 Javascript 中使用正则表达式

javascript - 如何明确禁用按钮 Angular

node.js - 在 ubuntu 上运行 newman 时出现语法错误