我想要做的是定义一个学生模型,其中包含一个名为“schedules”的字段,其中包含一个 Schedule 实例数组,但我不希望 Schedule 模型能够保存到它自己的集合中。
这是一些代码,它会更有意义:
var ScheduleSchema = new Schema({
day: {type: Number, min: 0, max: 6},
time: {type: Number, min: 0, max:24}
});
var StudentSchema = new Schema({
firstName: String,
schedule: [ScheduleSchema]
});
var Schedule = mongoose.model("Schedule", ScheduleSchema);
var Student = mongoose.model(modelName, StudentSchema);
Student.Schedule = Schedule;
我在这段代码中遇到的问题是,当我这样做时:
var schedule = new Student.Schedule({day: 3, time: 15});
当我 console.log 时,我会得到这样的东西
{ "day" : 3, "time" : 15, "_id" : ObjectId("5019f34924ee03e20900001a") }
我通过在模式中明确定义_id来绕过_id的自动生成,
var ScheduleSchema = new Schema({
_id: ObjectIdSchema,
day: {type: Number, min: 0, max: 6},
time: {type: Number, min: 0, max:24}
});
现在它只是给了我:
{ "day" : 3, "time" : 15}
这可能是一个黑客......而不是我想要依赖的东西。
另一个问题是,如果我这样做
schedule.save()
它实际上会创建一个集合并将文档保存到数据库中。
有没有办法为 Schedule 禁用 save()?有正确的方法吗?
我可能会坚持我所拥有的,或者满足于混合类型但在验证上失败了..