У меня есть пользовательская модель mongoose, которая имеет следующую схему:
const mongoose = require('mongoose');
let Question = require('./questions');
let questionSchema = mongoose.model('Question').schema
let userSchema = mongoose.Schema({
name : {
type: String,
required: true
},
questions : {
type: [questionSchema],
required: false
}
}, {collection: 'users'});
Пользователи могут добавлять вопросы, а другие пользователи должны отвечать на вопросы, поэтому у меня есть модель вопросов и ответов со следующими схемами.Это схема вопроса:
let questionsSchema = mongoose.Schema({
owner : {
type : String,
required : true
},
answered : {
type : Boolean,
required : true,
},
text : {
type : String,
required : true
},
answers : {
type : [{ type: mongoose.Schema.Types.ObjectId, ref: 'Answer' }]
}
});
Это схема ответа:
let answersSchema = mongoose.Schema({
question : {
type : mongoose.Schema.Types.ObjectId,
ref : 'Question'
},
owner : {
type : mongoose.Schema.Types.ObjectId,
ref : 'User'
},
text : {
type : String,
required : true
},
correct : {
type : Boolean,
required : true
}
});
Моя проблема в том, что объекты моего вопроса, которые находятся в массиве пользователей, похоже, несоответствовать объектам вопроса.Вот как я нажимаю ответ на массив answers
в объектах вопроса.
Question.findOne({_id : data._id}, (err, question) => {
if (err) throw err;
let answer = new Answer({
question : data._id,
owner : data.owner,
text : req.body.answer_text,
correct : false
});
answer.save((err)=>{
if (err) throw err;
question.answers.push(answer);
question.save((err) => {
if (err) throw err;
});
});
По проверке я вижу, что это успешно добавляет ответы к массиву в объектах вопросов, набрав db.questions.find()
в программе оболочки mongo.Другими словами, массив вопросов answers
заполняется.Однако массив answers
, относящийся к вопросам в документах User
, пуст, независимо от того, сколько ответов на самом деле имеется.У меня сложилось впечатление, что, поскольку мои вопросы имеют то же значение _id
, что и в массиве вопросов пользователя, любые изменения, которые я внес в объекты вопросов, будут автоматически отражаться объектами вопросов в массиве пользователей.Как заставить массив вопросов пользователя обновить свое поле answers
, чтобы отразить изменения, внесенные в объекты вопросов?