Ссылки на объекты в массиве Мангуста - PullRequest
0 голосов
/ 05 июня 2018

У меня есть пользовательская модель 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, чтобы отразить изменения, внесенные в объекты вопросов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...