Обновление массива документов Mongoose - PullRequest
0 голосов
/ 05 марта 2019

У меня есть следующий документ:

const questionSchema = new Schema({
  text: { type: String, required: true, unique: true, minLength: 3 },
  approved:{type: String, default: false},
  ups: [{type: Schema.Types.ObjectId, ref:'User'}],
  downs: [{type: Schema.Types.ObjectId, ref:'User'}],
  tags: [{type: Schema.Types.ObjectId, ref: 'Tag'}],
  answers: [{type: Schema.Types.ObjectId, ref: 'Answer'}],
  author: {type: Schema.Types.ObjectId, ref: 'User'}
})

const Question = model('Question', questionSchema);
module.exports = Question;

Когда я пытаюсь получить его, отредактируйте массивы «взлетов» и «падений», а затем сохраните его:

Question.findById(questionId)
      .then(q => {
        q.downs.remove(userId);
        q.ups.push(userId);

        q.save()
          .catch(e => {
            console.log(e);
          })
      })

Я получаю следующие ошибки как при взлете, так и при падении одновременно:

Ошибка приведения к [ObjectId] для значения "[0]" при пути "downs"

Ошибка приведения к [ObjectId] для значения "[0]" при пути "ups"

Я также пытался с этим кодом, но он выдает ошибку, что я не могу нажать на поле, не являющееся массивом:

Question.findByIdAndUpdate(questionId, {$push: {downs: userId}});

Что я делаю не так?

...