SELECT
`template`.`id`,
...
(SELECT COUNT(*) FROM `templateSets` WHERE `template`.`id` = `templateSets`.`templateId`) AS `setCount`
FROM `templates` AS `template`
models.template.findAll({
include: [{
model: models.templateSet,
attributes: [[models.sequelize.fn('COUNT', models.sequelize.col('*')), 'setCount']]
}]
})
, оно лепит джоин и включает templateSets.id в список полей, не совсем то, что нужно db.User.findAll({
attributes: Object.keys(db.User.attributes).concat([
[db.sequelize.literal('(SELECT count(*) FROM user_phones WHERE user_phones.user_id = user.id)'), 'total']
])
})