我目前正在使用mongodb和mongoose编写一个Web应用程序。我定义了一个文档架构,它有一个子文档数组。我在不同的Schema中定义了subdocs。子文档包含具有默认值的字段,例如:end: {type: Date, default: Date.now}
。不幸的是,在使用某些子文件创建父文档时,只设置了我明确设置的subdoc的字段。似乎mongoose忽略了default
选项。
你们有什么想法我做错了吗?
修改
employment.model.js
var Shift = require('./shift.model.js').ShiftSchema;
var EmploymentSchema = new Schema({
title: {type: String, required: true},
....
shifts: [Shift]
});
shift.model.js
var ShiftSchema = new Schema({
title: {type: String},
....
info: {type:String, default: 'Hallo'},
start: {type: Date, default: Date.now, index: true},
end: {type: Date, default: Date.now}
});
module.exports.ShiftSchema = ShiftSchema;
module.exports = mongoose.model('Shift', ShiftSchema);
未设置上述default
值。
我的mongoose.js版本是:~3.8.8
示例转移创建
Employment.create({
title: 'PopulateDB Employ',
start: new Date(),
customer: result.customer,
shifts: [{
title: 'Shift 1',
start: new Date()
},{
title: 'Shift 2',
start: new Date()
}]
},cb)
答案 0 :(得分:1)
您正在使用下一个语句覆盖导出ShiftSchema
,该语句将模型指定为模块的唯一导出。结果是Shift
在 employment.model.js 中最终为undefined
。
将该文件的第一行更改为以下内容以从导出的模型访问架构:
var Shift = require('./shift.model.js').schema;
并删除 shift.model.js 中的module.exports.ShiftSchema = ShiftSchema;
行。