Sequlize Postgres как посчитать количество связанных моделей?

Имееются таблица постов и категорий, связь многие ко многим. Связаны через промежуточную таблицу.

при запросе категорий выводятся связанные модели постов.

category: {
  id: 2,
  posts: [
   {id:1, title: 'test'}
  ]
}

как мне возвращать не сами посты, а только их количество?

Category.findAll({
      include: [
        {
          model: Post
        },
      ],
 })

Хочу на выходе получить

category: {
  id: 2,
  posts: 1
}

Ответы (1 шт):

Автор решения: Anatoly

Sequelize не предназначен для сколько-нибудь сложных агрегаций, он больше о CRUD и подгрузке ассоциаций. Вам нужно будет добавить подзапрос для этого в attributes.
Что-то типа такого:

Category.findAll({
   attributes: {
     include: [[Sequelize.literal('(SELECT COUNT(*) from Posts p where p.category=category.id)'), 'posts']]
   }
 })
→ Ссылка