2017-01-31 22 views
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 } 
+1

@chridam,我在另一個答案中看到了你的評論,它的工作完美。謝謝! – vhflat

回答

0

因此,對於任何有同樣的問題掙扎,我改變了時間場

hours: [{ 
       number: Number, 
       available: { type: Boolean, default: false }, 
       booked: { type: Boolean, required: true, default: false }, 
       _id: false, 
       lesson: {type: mongoose.Schema.Types.ObjectId, ref: "Lesson"} 
      }] 

就是這樣。不知道爲什麼貓鼬每小時開始創建ID。