私がやろうとしているのは、Schedule インスタンスの配列を含む「スケジュール」というフィールドを持つ Student モデルを定義することですが、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()
実際にコレクションを作成し、ドキュメントをデータベースに保存します。
スケジュールの save() を無効にする方法はありますか? これを行う正しい方法はありますか?
私はおそらく私が持っているものに固執するか、混合タイプに落ち着くことができますが、検証に負けます..