Sequelize - ставить значение агрегатной функции вне каждого результата - PullRequest
0 голосов
/ 23 мая 2018

ТЛ: др;- Я хочу извлечь результат усредненной функции агрегирования, который включается в каждую запись, в отдельное значение в моем наборе результатов в Sequelize.

У меня есть таблица reviews, и я хочу получитьсовокупное среднее всех отзывов.Я хочу включить это как столбец в дополнение к массиву возвращаемых строк.

Необработанный запрос postgres:

SELECT avg(rating) as average_rating
FROM reviews
GROUP BY rating;

В ORM мой запрос выглядит следующим образом:

  const reviews = await Review.findAll({
    where: {
      id: req.params.id,
      status: STATUS_TYPE_ACTIVE
    },
    attributes: [
      'id',
      'rating',
      'body',
      'created_at',
      'updated_at',
      [
        sequelize.fn('AVG', sequelize.col('review.rating')),
        'average_rating'
      ]
    ],
    include: [
      {
        model: User,
        attributes: ['id', 'photo', 'username']
      }
    ],
    group: ['review.id', 'user.id']
  });

, который возвращает такие значения, как:

  review {
    dataValues:
     { id: 2,
       rating: 5,
       body: 'testing',
       created_at: 2018-05-22T18:41:46.385Z,
       updated_at: 2018-05-22T18:41:46.385Z,
       average_rating: '5.0000000000000000', <--- here we are
       user: [user] },

Как видите, average_rating там и выглядит хорошо.Но я не хочу, чтобы это включалось для КАЖДОЙ записи обзора, которую я получаю - только один раз.

Я могу легко преобразовать возвращаемый массив (и вырвать average_rating), но я бы не хотел изменятьпредметы после того, как они возвращаются из ОРМ.Как я могу это сделать?

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