You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Sequelize.js按tags分组查询userblogs表的博客列表

如何从userblogs表中按tags分组获取博客列表?

你期望的SQL查询逻辑如下:

select max(id) as id, max(blogdetails) as blog, tags, count(tags) as tagcount from userblogs group by tags;

你当前尝试的Sequelize代码:

app.get('/service/listofblogs', async (req, res) => {
      try {
        const blogData = await BlogModel.findAll(
         {attributes: ['blogdetails', 'tags']},
         { group: ['tags'] }
        );
        res.status(200).json({ blogData });
      } catch (e) {
        res.status(500).json({ message: e.message });
      }
    });

修正后的代码

你的现有代码未实现目标SQL中的聚合逻辑(max和count计算),需要借助Sequelize的fn和col方法调用SQL聚合函数,调整后代码如下:

const { fn, col } = require('sequelize');

app.get('/service/listofblogs', async (req, res) => {
  try {
    const blogData = await BlogModel.findAll({
      attributes: [
        [fn('max', col('id')), 'id'],
        [fn('max', col('blogdetails')), 'blog'],
        'tags',
        [fn('count', col('tags')), 'tagcount']
      ],
      group: ['tags']
    });
    res.status(200).json({ blogData });
  } catch (e) {
    res.status(500).json({ message: e.message });
  }
});

说明

这段代码会生成与目标SQL完全一致的查询:按tags分组后,获取每组最大的id、最大的blogdetails(别名blog)、分组的tags值,以及该标签对应的博客数量(别名tagcount)。

内容的提问来源于stack exchange,提问作者soccerway

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 01:32:00