mon goose используйте findOneAndUpdate и верните только обновленный элемент в массиве - PullRequest
1 голос
/ 06 августа 2020

У меня следующая проблема:

  let post = await User.findOneAndUpdate(
    { _id: USER_ID },
    {
      $push: {
        posts: {
          title,
          content,
          userId: USER_ID,
          titleUrl,
          thumbnail: {
            webp: WEBP_PATH,
            jpeg: JPEG_PATH,
            placeholder: PLACEHOLDER
          }
        }
      }
    },
    { new: true }
  );

Этот запрос почти работает. Проблема в том, что всякий раз, когда я получаю sh элемент массива, я хочу вернуть обновленный элемент. К сожалению, я получаю весь документ со всеми сообщениями в массиве. Конечно, я мог бы сделать что-то вроде posts.slice(-1), но я думаю, что это супер неэффективно загружать все, если мне нужен только один элемент, не так ли?

Кто-то знает, как получить только новый добавленный объект?

1 Ответ

1 голос
/ 06 августа 2020

К сожалению, нет варианта с findOneAndUpdate

Вы можете сделать projection в исходном документе, но не в обновленном документе с помощью findOneAndUpdate

Я не думаю, что есть нет простого эффективного способа сделать это.

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