Mongoose.js忽略子模式中的默认值

我目前正在用MongoDB和mongoose写一个Web应用程序。 我定义了一个具有一系列子文档的文档模式。 我在一个不同的模式中定义了子目录。 子文档具有默认值的字段,例如: end: {type: Date, default: Date.now} 。 不幸的是,在创build带有一些子文档的父文档时,只有显式设置了子文档的字段。 似乎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

样本移位创build

 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) 

用下ShiftSchema将模型指定为模块唯一导出的语句覆盖您的ShiftSchema导出。 结果是Shiftemployment.model.js中 undefined

将该文件的第一行更改为以下内容以从导出的模型中访问模式:

 var Shift = require('./shift.model.js').schema; 

只需删除module.exports.ShiftSchema = ShiftSchema; line.model.js