mysql 如何在Sequelize中计数具有特定值的行?

nwlqm0z1  于 2023-06-28  发布在  Mysql
关注(0)|答案(1)|浏览(116)

我有一个mysql表,我使用sequelize在node.js中查询它。如何统计具有特定值的所有行?这就是代码:

const data = await db.models.fruits.findAll({
    where: { type: `fresh` },
    group: `title`,
    attributes: [`title`, [Sequelize.fn(`COUNT`, `title`), `title`]]
})

const rows = data.map(el => el.get({ plain: true }))
console.log(rows)

在我的控制台中,我得到了结果:

[ { title: 17 }, { title: 15 } ]

算对了。但我的问题是我应该如何转换Sequelize代码以获得这样的结果:

[ { orange: 17 }, { apple: 15 } ]
6pp0gazn

6pp0gazn1#

使用map将fruit属性转换为title,将count属性转换为value。例如:如果数据阵列包含{ fruit: 'orange', count: 17 }{ fruit: 'apple', count: 15 },则行阵列将包含{ orange: 17 }{ apple: 15 }

const data = await db.models.fruits.findAll({
  where: { type: `fresh` },
  group: `title`,
  attributes: [
    [Sequelize.literal(`title`), `fruit`],
    [Sequelize.fn(`COUNT`, `title`), `count`]
  ]
});

const rows = data.map(el => {
  const obj = {};
  obj[el.get(`fruit`)] = el.get(`count`);
  return obj;
});

console.log(rows);

相关问题