【发布时间】: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"
}
【问题讨论】: