Мангуста множественный $ push тот же поддокумент - PullRequest
0 голосов
/ 30 января 2019

У меня есть код, который должен вставить вложенный документ update в массив внутри основного документа: проблема, возникающая при многократном вызове этой функции в nodejs,иметь последнее обновление только с MyObject.bar .

  1. Есть ли управление параллелизмом , которое мне нужно сделать на уровне updateOne?
  2. Нужно ли использовать findOneAndUpdate mongoose вместо updateOne ?
  3. Есть ли какая-то специальная опция для использования с updateOne, чтобы убедиться, чтоя обновляю последнюю версию документа?

Спасибо за любую помощь!

myschema:

var mongoose = require('mongoose')

var fooSchema = new mongoose.Schema({
  _id: mongoose.Schema.Types.ObjectId,
  timeline : [{
    //...
  }]
})

моя функция:

fooSchema.statics.updateItem = function(update){

  this.updateOne({
    '_id': mongoose.Types.ObjectId(foo)
  }, {
      $push: {
        'bar': update
      }
    }, { safe: true }).exec()
    .then(function (result) {
      if (cb) {
        cb(null, result)
      }
      return null
    }).catch(function (err) {
      if (cb) {
        cb(err)
      }
      return null
    })

}
...