Node.js 如何防止猫鼬创建id';什么时候我创建一个模式,其中有一个引用另一个mongoose对象的位置?

Node.js 如何防止猫鼬创建id';什么时候我创建一个模式,其中有一个引用另一个mongoose对象的位置?,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,这不是一个重复的问题,因为我“重复”的问题是关于从subchemas中删除id。在这里,我想防止猫鼬在我的日历中用id来填充时间,不引用任何内容。它只是用来存储带有课程id的课程 我正在尝试制作一个包含周、日和小时的日历,每个小时都应该能够参考一节课 这是我的日历模式: var mongoose = require("mongoose"); var calendarSchema = new mongoose.Schema({ owner: {type: mongoose.Schema.

这不是一个重复的问题,因为我“重复”的问题是关于从subchemas中删除id。在这里,我想防止猫鼬在我的日历中用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);
当每个用户使用此功能注册时,我会为他们创建一个新日历

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;
}
问题是,即使我没有分配任何课程,用户日历中的每个小时现在都包含一个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"}
            }]

就这样。不知道为什么猫鼬开始为每小时创建ID

@chridam,我在另一个答案中看到了你的评论,效果非常好。谢谢
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"}
            }]