【问题标题】:How to set default on insert or create or save in mongoose如何在猫鼬中插入或创建或保存时设置默认值
【发布时间】:2020-03-02 13:13:29
【问题描述】:

在 mongoose 中,我使用 insert 或 save 在我的 userRole 集合中创建新文档,但它们没有设置在 mongoose 模式中定义的默认值。

let userRole = new Schema({
    roleName: { type: String },
    isActive: { type: String, enum: ["YES", "NO"], defalut: "YES" }
});

Mongoose 提供 setDefaultOnInsert 选项,但它仅适用于 findOneAndUpdate。那么如何在创建新文档时使用 save 或 insert 设置默认值?

createRole: (callback) => {
            let dataToSave = {roleName: "ADMIN"}
            return DBFunction.saveData(Models.userRole, dataToSave, (err, data) => {
                if (err) return callback(err);
                if (!data || !data._id) return callback("Something went worng!");
                logger.debug("\nUserRole Created --->>>\n", data)
                return callback(null, data);
            });
        }

数据库函数文件或 DBFunction

exports.saveData = (model, data, callback) => new model(data).save((err, result) => err ? callback(err) : callback(null, result));

exports.insert = (model, data, options, callback) => model.collection.insert(data, options, (err, result) => err ? callback(err) : callback(null, result));

在mongodb中,创建的文档是

{
    roleName: "ADMIN"
}

我想要这样:

{
    roleName: "ADMIN",
    isActive: "YES"
}

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    您应该使用default 选项。你的配置有错别字。你正在使用defalut。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-12
      • 2020-08-26
      • 2016-06-20
      • 2017-11-01
      • 2019-12-05
      • 2022-12-31
      • 2019-04-14
      • 2019-04-10
      相关资源
      最近更新 更多