使用 sequelize 查询编码的地方进行计数

count with where query to code by use sequelize

我想通过使用 sequelize 将此查询更改为代码,node.js 取决于位置

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

但我不知道如何添加

原代码:

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

我通过查询解决了它:

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

编码续集:

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

对于"sequelize": "^5.21.3"

选项 1.

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

执行结果:

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

选项2。您可以使用Model.count()

Count the number of records matching the provided where clause.

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

执行结果:

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

以上例子基于数据库中的数据记录: