Sequelize query with count in inner join

express, node.js, sequelize.js

Solution

Let's assume that `Family` is your `families` sequelize model and `Answer` is your `answers` sequelize model, and `sequelize` is your Sequelize instance

Family.findAll({
    attributes: ['*', sequelize.fn('COUNT', sequelize.col('Answers.familyId'))],
    include: [
        {
            model: Answer,
            attributes: [],
            where: {
                isActive: 1,
                answer: 1
            }
        }
    ],
    group: '"Family.id"',
    having: sequelize.where(sequelize.fn('COUNT', sequelize.col('Answers.familyId')), '>=', 6)
}).then((families) => {
    // result
});

Useful documentation links:

- `sequelize.fn()`

- `sequelize.where()`

- `sequelize.col()`

Problem

I am trying to convert this query to sequelize query object what is the right wayto do it? ``` SELECT families.id, count('answers.familyId') FROM families LEFT JOIN answers on families.id = answers.familyId WHERE answers.isActive=1 AND answers.answer=1 GROUP BY families.id HAVING COUNT('answers.familyId')>=6 ```

Original source

Related problems