【发布时间】:2016-12-29 15:00:30
【问题描述】:
我有 2 个独立的模型:
models/day.js:
var mongoose = require ('mongoose');
var Schema = mongoose.Schema;
var shiftSchema = require('./shift').shiftSchema;
var daySchema = new Schema({
date: {
type: String,
required: true
},
shifts: [shiftSchema]
});
module.exports = {
model: mongoose.model('Day', daySchema)
};
和
models/shift.js:
var mongoose = require ('mongoose');
var Schema = mongoose.Schema;
var shift_status_enum = {
values: ['open', 'closed'],
message: '`{VALUE}` is not a valid shift status.'
};
var shiftSchema = new Schema({
start: {
type: Number,
required: true
},
end: {
type: Number,
required: true
},
status: {
type: String,
enum: shift_status_enum,
required: true,
default: 'open'
}
});
shiftSchema.pre('save', function(next) {
if (this.start >= this.end)
return next(Error('error: Shift end must be greater than shift start.'));
if(this.interval > this.end - this.start)
return next(Error('error: Shift interval cannot be longer than the shift.'));
else
next();
});
module.exports = {
model: mongoose.model('Shift', shiftSchema)
};
我正在尝试将shifts 的数组嵌入到day 中,如上所示。但是,当我尝试在 daySchema 中引用 shiftSchema 时,出现错误:
TypeError: Invalid value for schema Array pathshifts``。
但是,当我尝试将shiftSchema 复制到同一个文件中时,它起作用了。是否可以在不将子架构与父架构放在同一个文件中的情况下引用子架构(及其所有验证),还是它们必须在同一个文件中?
【问题讨论】: