Задать вопрос
@Devero97

Как обновить данные с помощью aggregate?

Есть такой код:
reviewSchema.statics.getAverageRating = async function(card) {
  console.log(card);
  const obj = await this.aggregate([
    {
      $match: { card: card }
    },
    {
      $group: {
        _id: "$card",
        averageRating: { $avg: "$rating" },
        ratingParams: { $avg: "$ratingParams" }
      }
    }
  ]);

  try {
    await this.model("cards").findByIdAndUpdate(card, {
      averageRating: obj[0].averageRating,
      ratingParams: obj[0].ratingParams
    });
  } catch (err) {
    console.log(err);
  }
};


При создании review, в другой коллекции идет поиск и изменяются данные, я так понимаю. Проблема в том, что работает это только вот так (с одним параметром)
reviewSchema.statics.getAverageRating = async function(card) {
  console.log(card);
  const obj = await this.aggregate([
    {
      $match: { card: card }
    },
    {
      $group: {
        _id: "$card",
        averageRating: { $avg: "$rating" }
      }
    }
  ]);

  try {
    await this.model("cards").findByIdAndUpdate(card, {
      averageRating: obj[0].averageRating
    });
  } catch (err) {
    console.log(err);
  }
};

Но мне нужно обновлять 2 параметра. Но при сохранении, один изменяется параметр, а другой принимает значение null. Дело в том, что я передаю вторым параметром объект, Возможно из-за этого происходит ошибка? Как правильно это обработать?
  • Вопрос задан
  • 50 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы