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']]
}
})