Поддержка массива вложенных документов в Mongoose - лучшая практика - PullRequest
0 голосов
/ 02 декабря 2018

Есть ли лучший способ сохранить вложенный документ в Mongoose?Как я знаю, мне нужно сначала попытаться обновить документ.Когда он не найден - я выполняю push в массив под-документа.Код выглядит не очень красиво.Не могли бы вы поделиться передовым опытом по этому поводу?

   async (eventId, userId, bet) => {
      bet.user = userId;

      try {
        let event = await Event.findOneAndUpdate({ 
          '_id': eventId,
          // 'bettingFinishDate': { $gt: new Date() },
          'isDeleted': false,
          'bets.user': userId,
          'bets.isDeleted': false }, {
            '$set': {
              'bets.$': bet
            }
          }, { 'new': true });

        if (!event) {
          event = await Event.findOne({
            '_id': eventId,
            'isDeleted': false,
          });
          event.bets.push(bet);
          event = await event.save();
        };

        return event;
      } catch (e) {
        throw new Error('An error occurred while adding bet to specified event.');
      };
    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...