zzpda 2023-05-18 19:36 采纳率: 70.6%
浏览 10
已结题

node.js sequelize 如何返回多个汇总结果

node.js+sequelize+sqlite

img

findAll中如何一次返回'审核中','审核通过,'审核未过',及全部多个汇总结果

  • 写回答

1条回答 默认 最新

  • 码王吴彦祖 2023-05-19 14:21
    关注

    可以使用 Sequelize 的 aggregate 函数,通过 COUNT() 函数对指定字段进行聚合,从而得到审核状态的数量统计信息。具体实现参考下面的示例代码:

    const { Sequelize, Model, DataTypes } = require('sequelize');
    
    const sequelize = new Sequelize('database', 'username', 'password', {
      dialect: 'sqlite',
      storage: 'database.sqlite'
    });
    
    class Item extends Model {}
    Item.init({
      name: DataTypes.STRING,
      status: DataTypes.STRING
    }, { sequelize, modelName: 'item' });
    
    (async () => {
      // 添加测试数据
      await sequelize.sync();
      await Item.create({ name: 'foo', status: '审核中' });
      await Item.create({ name: 'bar', status: '审核通过' });
      await Item.create({ name: 'baz', status: '审核未过' });
      await Item.create({ name: 'qux', status: '审核通过' });
    
      // 查询审核状态统计信息
      const result = await Item.findAll({
        attributes: [
          'status',
          [Sequelize.fn('COUNT', Sequelize.col('*')), 'count']
        ],
        group: 'status'
      });
      console.log(result);
    })();
    

    以上代码演示了如何使用 Sequelize 操作 SQLite 数据库进行查询,具体步骤如下:

    1. 根据需要统计的字段用 Sequelize.fn() 创建计算表达式,这里使用 COUNT() 函数进行聚合;
    2. 在查询中使用 Sequelize.col() 引用表中的字段;
    3. 通过 group 参数指定按照什么字段进行分组统计。

    查询结果将返回一个数组,其中每个元素是一个包含统计信息的对象,例如:

    [
      { status: '审核中', count: 1 },
      { status: '审核通过', count: 2 },
      { status: '审核未过', count: 1 }
    ]
    

    如果需要查询所有审核状态的信息,在查询中不用指定 group 参数即可,例如:

    const result = await Item.findAll({
      attributes: [
        'status',
        [Sequelize.fn('COUNT', Sequelize.col('*')), 'count']
      ]
    });
    console.log(result);
    

    以上查询结果将返回所有结果的审核统计信息,包括总数。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月27日
  • 已采纳回答 5月19日
  • 创建了问题 5月18日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改