【发布时间】:2012-07-31 01:03:04
【问题描述】:
我要做的是定义一个 Student 模型,其中包含一个名为“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}
这可能是一个 hack.. 而不是我想要依赖的东西。
另一个问题是,如果我这样做了
schedule.save()
它实际上会创建一个集合并将文档保存到数据库中。
有没有办法为 Schedule 禁用 save()?有正确的方法吗?
我可能会坚持我所拥有的,或者满足于混合类型但在验证上失败..
【问题讨论】:
标签: validation node.js model mongoose