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
导出。 结果是Shift
在employment.model.js中 undefined
。
将该文件的第一行更改为以下内容以从导出的模型中访问模式:
var Shift = require('./shift.model.js').schema;
只需删除module.exports.ShiftSchema = ShiftSchema;
line.model.js 。