Mongoose.js 忽略子文档架构中的默认值

Mongoose.js ignoring default value in subdoc Schema

我目前正在使用 mongodb 和猫鼬编写一个网络应用程序。我定义了一个文档模式,它有一个子文档数组。我在不同的架构中定义了子文档。子文档的字段具有默认值,例如:end: {type: Date, default: Date.now}。不幸的是,在使用某些子文档创建父文档时,仅设置了我明确设置的子文档的字段。猫鼬似乎忽略了 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);

None 以上 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)

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

中变成 undefined

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

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

并删除 shift.model.js.

中的 module.exports.ShiftSchema = ShiftSchema;