findOneAndUpdate возвращает null, если пользователь не обновлен (из-за условий)

Если Вы читаете мой код, вы увидите, что пользователь не обновляется, если идентификатор, заданный запросом, соответствует элементу в Friendsмассиве документа (из-за $notоператора). Таким образом, если пользователи найдены и не обновлены, результат (myDoc, otherDoc) возвращается null. Я хотел бы получить оба документа независимо от того, были ли они обновлены или нет. Я проверил документы мангуста, но не могу найти решение для этого.

promise.all([
 User.findOneAndUpdate( {id: req.body.myId, Friends: { $not: { $elemMatch: { id: req.body.id }}}}, {$addToSet: { Friends: { id:   req.body.id, gender: req.body.gender, emoji: res.locals.myEmoji }}}), 
  User.findOneAndUpdate({id: req.body.id, Friends: {$not: { $elemMatch:    {id: req.body.myId }}}}, {$addToSet:  { Friends: { id: req.body.myId,    gender: req.body.myGender, emoji: res.locals.friendEmoji }}})])
 .spread(function (myDoc, otherDoc){


  ///gives back null if user is not updated

 }).catch(function (err){

  return res.status(400).send(err)

 });

Edit: есть ли какой-то плагин мангуста полезно для этого? ….

1 ответ

  1. Если вы хотите получить обратно обновленный документ после findoneandupdate добавить аргумент с именем new и установить его в true, что-то вроде.

    User.findOneAndUpdate( {
      id: req.body.myId, Friends: { $not: { $elemMatch: { id: req.body.id }}}
    },{
      $addToSet:{Friends:{ id: req.body.id, gender: req.body.gender,emoji: res.locals.myEmoji}}
    }, {
      new: true
    }),