Mongoose.js忽略subdoc Schema中的默认值

时间:2015-02-26 11:51:02

标签: node.js mongodb mongoose

我目前正在使用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)

1 个答案:

答案 0 :(得分:1)

您正在使用下一个语句覆盖导出ShiftSchema,该语句将模型指定为模块的唯一导出。结果是Shift employment.model.js 中最终为undefined

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

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

并删除 shift.model.js 中的module.exports.ShiftSchema = ShiftSchema;行。