У меня есть две модели на MongoDb, одна для пользователей, а другая для событий. Как только пользователь создал учетную запись и вошел в систему, он показывает защищенную страницу, где события могут быть добавлены в его собственный профиль. Я пытаюсь использовать populate ("events") для ссылки на схему событий, отображаемую в пользовательской схеме. А также $ push, чтобы отправить событие пользователю после его создания. Результаты: Событие создается просто отлично, но ничто не передается в массив событий в модели пользователей. Используя почтальона, чтобы увидеть пользователя, он показывает массив событий пустым, и я получаю ответ 200 с пустым объектом. Что мне здесь не хватает? Я впервые связываю схемы с MongoDb и не могу заставить их работать. Любая помощь очень ценится.
Я попытался добавить функцию обратного вызова после {new: true}, а также {safe: true, upsert: true}, но ничего не изменилось.
Здесьчасть моего кода:
Модель пользователя:
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const userSchema = new Schema({
username: { type: String, required: true },
firstName: { type: String, required: true },
lastName: { type: String, required: true },
phone: { type: String },
password: { type: String },
email: { type: String, required: true },
events: [{ type: Schema.Types.ObjectId, ref: "Event" }]
});
const User = mongoose.model("User", userSchema);
module.exports = User;
Модель событий:
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const eventSchema = new Schema({
title: { type: String, required: true },
start: { type: Date, required: true },
end: { type: Date, required: true },
appointment: { type: String, required: true }
});
const Event = mongoose.model("Event", eventSchema);
module.exports = Event;
Маршрут для создания событий, а затем попытка отправить созданный объект наСхема пользователя:
router.post("/users/:_id", function(req, res) {
Event.create({
title: req.body.title,
start: req.body.start,
end: req.body.end,
appointment: req.body.appointment
})
.then(function(dbEvent) {
return User.findOneAndUpdate(
{ _id: req.params._id },
{
$push: {
events: dbEvent._id
}
},
{ new: true }
);
})
.then(function(dbUser) {
res.json(dbUser);
})
.catch(function(err) {
res.json(err);
});
});
Получить одного пользователя, но он возвращает пользователя с пустым массивом для событий.
router.get("/users/:_id", (req, res) => {
return User.findOne({
_id: req.params._id
})
.populate("events")
.then(function(dbUser) {
if (typeof dbUser === "object") {
res.json(dbUser);
}
});
});
Заранее спасибо.