Модель не полностью сохраняется при сохранении в Mongoose / MongoDB - PullRequest
0 голосов
/ 28 января 2020

У меня проблемы с сохранением довольно большой модели, после model.save() сохраняется только часть модели. В обещании возвращается правильная модель, но база данных совершенно другая.
Модель:

// Quiz model

    title:{
        type: String,
        required: true
    },
    points: {
        type: Number,
        default: 1
    },
    towards: [Object],
    questions: {
        type: Object,
        require: true
    },
    reviews: {
        type: [Object],
    },
    rating: {
        type: Number,
        default: 0
    }

Сценарий обновления модели:

const { qid, uid, right, review } = req.body;
        .then( async quiz => {
                const user = await User.findById(uid)
                return { quiz, user };
        })
        .then( data => {
              var quiz = data.quiz; 
              var user = data.user;

              var attempt = {
                    correct_answer: right,
                    incorrect_answer: Object.keys(quiz.questions).length-righ
              }
              right == Object.keys(quiz.questions).length ? attempt.complete = true : attempt.complete = false;
                    if(review){
                        quiz.rating = 0;
                        quiz.reviews.push(review);
                        quiz.reviews.forEach( review => {
                            quiz.rating += review.rating;
                        })
                        quiz.rating = quiz.rating/quiz.reviews.length;
                    }
                    // user._id = 5e2fed3c5c4bf200c8752868
                    quiz.towards[0].staff[user._id].attempts.push(attempt);
                    quiz.towards[0].staff[user._id].check = true 
                    return quiz.save();
               })

Что сохраняется в базе данных:

Mongo Return Что возвращено в обещании:

{
  from: 2020-01-28T10:14:05.953Z,
  to: 2020-01-28T10:14:05.953Z,
  points: 1,
  towards: [
    { branchId: 5e2ffa0e52601856147d62c9, staff: {
  '5e2fed3c5c4bf200c8752868': { check: true, attempts: [ 
    {
      correct_answer: 2,
      incorrect_answer: 0,
      points: 2,
      complete: true
    }
  ],
  complete: false },
  '5e2fed3c5c4bf200c8752869': { check: false, attempts: [], complete: false },
  '5e2fed3c5c4bf200c875286e': { check: false, attempts: [], complete: false }
 },
    { branchId: 5e2ffaba52601856147d62cb, staff: {} }
  ],
  upload_at: 2020-01-28T10:14:05.000Z,
  reviews: [
    {
      rating: 3,
      text: 'some text',
      author: '5e2b0be2dcd6e72a288a5424'
    }
  ],
  rating: 3,
  _id: 5e300996ad64755794bab204,
  title: 'Quiz',
  description: 'some text',
  author: '5e2ff7571c9d440000f1b560',
  questions: {
    ...
  }
}

Я пытался использовать quiz.markModified('towards.staff'), но получил MongoError error: Cannot create field 'staff' in element

Я в замешательстве. Почему не сохраняется то, что я отправляю?

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