2
這不是重複的,因爲我「重複」的問題是關於從subchemas中刪除id的問題。在這裏,我想要防止貓鼬填寫我的日曆中的小時與ID的沒有任何參考。它只是應該存儲課程id的課程。當我用一個地方創建一個引用另一個貓鼬對象的模式時,我該如何防止貓鼬創建id's?
我試圖製作一個帶有幾周,幾天和幾小時的日曆,每個小時應該能夠引用一個課程。
這是我的日曆模式:
var mongoose = require("mongoose");
var calendarSchema = new mongoose.Schema({
owner: {type: mongoose.Schema.Types.ObjectId, ref: "User"},
weeks: [{
number: Number,
days: [{
number: Number,
hours: [{
number: Number,
available: { type: Boolean, default: false },
booked: { type: Boolean, required: true, default: false },
lesson: {type: mongoose.Schema.Types.ObjectId, ref: "Lesson"}
}]
}]
}]
});
module.exports = mongoose.model("Calendar", calendarSchema);
我爲每個用戶創建一個新的日曆創建日曆
Calendar.create(generateCalendar(), function(err, calendar) {
if (err) {
console.log(err);
} else {
user.calendar = calendar;
user.save();
calendar.owner = user;
calendar.save();
res.redirect('/dashboard');
}
});
在註冊時使用此功能
generateCalendar = function() {
var calendar = {};
var date = new Date(2017,0,2);
calendar.weeks = [];
for (var w = 0; w < 52; w++) {
calendar.weeks[w] = {};
calendar.weeks[w].number = w+1;
calendar.weeks[w].days = [];
for (var d = 0; d < 7; d++) {
calendar.weeks[w].days[d] = {};
calendar.weeks[w].days[d].date = new Date(date.setDate(date.getDate()+1))
calendar.weeks[w].days[d].hours = [];
calendar.weeks[w].days[d].number = d+1;
for (var h = 0; h < 24; h++) {
calendar.weeks[w].days[d].hours[h] = {};
calendar.weeks[w].days[d].hours[h].number = h+1;
}
}
}
return calendar;
}
輸入
問題是,用戶日曆中的每個小時現在都包含一個貓鼬對象ID,即使我沒有分配任何教訓。
這是一個典型小時的樣子:
{ available: true,
booked: false,
_id: 5890b0f1abe4da6e879e2e38,
number: 13 }
我不知道爲什麼有一個在每小時ID,或者是它的參考!如果我在13小時加課變得
{ available: false,
booked: true,
lesson: 5890b1dfabe4da6e879e520a,
_id: 5890b0f1abe4da6e879e2e38,
number: 13 }
@chridam,我在另一個答案中看到了你的評論,它的工作完美。謝謝! – vhflat