Я очень новичок в использовании mongoose и выполнил простую работу с БД на mongodb.
Видя мой случай использования, я нашел этот способ сделать это в mongodb, используя mongoose. Однако я не получаю ожидаемого результата, как показано в учебниках.
Мои схемы
var EventsSchema = new mongoose.Schema({
root: {type: mongoose.Schema.Types.ObjectId, ref: 'root'},
voting: [{type: mongoose.Schema.Types.ObjectId, ref: 'Voting'}]
});
var VotingSchema = new mongoose.Schema({
events: {type: mongoose.Schema.Types.ObjectId, ref: 'Events'},
title: {
type: String,
required: true
}
})
var Events = mongoose.model('Events', EventsSchema, 'event');
var Voting = mongoose.model('Voting', VotingSchema, 'voting');
Первоначально у меня есть эти две схемы. Я хочу создать событие голосования. Когда создается событие голосования, тогда в voting schema
идентификатор события должен сохраняться в соответствии с предложением, и я хочу, чтобы ссылка на событие голосования сохранялась в EventSchema
.
var events = new Events({});
events.save()
.then((events) => {
var voting = new Voting({ events: events._id, title: "Test Title" });
voting.save()
.then((voting) => {
Voting.findOne({title: 'Test Title'})
.populate('events')
.exec(function(err, voting){
console.log(voting, err);
if(err) res.sendStatus(401).send();
else res.sendStatus(200).send();
})
})
.catch((e) => {
res.sendStatus(401).send();
});
})
.catch((e) => {
res.sendStatus(401).send();
})
На консоли я получаю
{
_id: 5b83eca82a3cfb1dec21ddc9,
events: { voting: [], _id: 5b83eca82a3cfb1dec21ddc8, __v: 0 },
title: 'Test Title',
__v: 0
}
Мой MongoDB выглядит так
голосование
{
"_id" : ObjectId("5b83eca82a3cfb1dec21ddc9"),
"events" : ObjectId("5b83eca82a3cfb1dec21ddc8"),
"title" : "Test Title",
"__v" : 0
}
События
{
"_id" : ObjectId("5b83eca82a3cfb1dec21ddc8"),
"voting" : [],
"__v" : 0
}
Я не уверен, как будет выглядеть мой mongodb. Но после попытки кода один раз он выглядит как выше.
Я, должно быть, делаю что-то не так или упускаю что-то важное. Но этот код есть и в документации. ссылка на документ . Помогите мне разобраться в этом вопросе.
Спасибо