count with where query to code by use sequelize

Viewed 4096

i want change this query to code by use sequelize and node.js depend on where

select COUNT(gender) as genderCount from customers where gender = "male"

but i don't know how to add where

this original code:

 Customer.findAll({
      attributes: { 
        include: [[Sequelize.fn("COUNT", Sequelize.col("gender")), "genderCount"]]  }
      }).then(data => {
      res.send(data)
    })
2 Answers

For "sequelize": "^5.21.3":

Option 1.

const customers = await Customer.findAll({
    attributes: [[Sequelize.fn('COUNT', Sequelize.col('gender')), 'genderCount']],
    where: {
      gender: 'male',
    },
    raw: true,
});

The execution result:

Executing (default): SELECT COUNT("gender") AS "genderCount" FROM "customers" AS "Customer" WHERE "Customer"."gender" = 'male';
[ { genderCount: '3' } ]

Option 2. You can use Model.count().

Count the number of records matching the provided where clause.

const customers = await Customer.count({ col: 'gender', where: { gender: 'male' } });

The execution result:

Executing (default): SELECT count("gender") AS "count" FROM "customers" AS "Customer" WHERE "Customer"."gender" = 'male';

The above examples base on data records in the database:

enter image description here

i solve it from query:

select COUNT(gender) as genderCount from customers where gender = "male"

to code sequelize :

await   Customer.findAll({
  attributes: { 
    include: [[Sequelize.fn("COUNT", Sequelize.col('gender')), "genderCount"]] ,  
  },
  where:[{"gender":'male'}]
  }).then(data => {
  res.send(data)
})
Related