当我创build一个引用另一个mongoose对象的地方的架构时,如何防止mongoose创buildid的?

这不是重复的,因为我“重复”的问题是关于从subchemas中删除id的问题。 在这里,我想防止mongoose填写我的日历中的小时,用id的参考什么都没有 。 这只是应该存储与课程ID的课程。

我正在努力制作一个有数周,数天和数小时的日历,每个小时都应该能够引用一个课程。

这是我的日历架构:

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); 

我使用此function注册时为每个用户创build一个新的日历

 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; } 

作为创build日历时的input

 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'); } }); 

问题是,即使我没有分配任何课程,用户日历中的每个小时现在都包含一个mongoose对象ID。

这是一个典型的小时的样子:

 { available: true, booked: false, _id: 5890b0f1abe4da6e879e2e38, number: 13 } 

我不知道为什么有一个小时内的ID,或者它的参考! 如果我在第13小时添加课程,它会变成

 { available: false, booked: true, lesson: 5890b1dfabe4da6e879e520a, _id: 5890b0f1abe4da6e879e2e38, number: 13 } 

因此,对于同样的问题挣扎的人,我把时间字段改为

 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"} }] 

就是这样。 不知道为什么mongoose每小时开始创buildID。