gpt4 book ai didi

node.js - 当我创建一个带有引用另一个 Mongoose 对象的位置的模式时,如何防止 Mongoose 创建 id?

转载 作者:可可西里 更新时间:2023-11-01 09:54:22 25 4
gpt4 key购买 nike

这不是重复问题,因为我“重复”的问题是关于从子化学中删除 ID。在这里,我想防止 mongoose 使用 reference nothing 的 ID 填充我日历中的时间。它只是应该存储带有类(class) ID 的类(class)。

我正在尝试制作一个包含周、日和小时的日历,其中每个小时都应该能够引用一个类(class)。

这是我的日历架构:

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

作为创建日历时的输入

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

问题是,即使我没有分配任何类(class),用户日历中的每个小时现在都包含一个 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 开始每小时创建一个 ID。

关于node.js - 当我创建一个带有引用另一个 Mongoose 对象的位置的模式时,如何防止 Mongoose 创建 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41962206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com