PrismaJS:如何按点赞数对帖子进行降序排序?
按点赞数量排序帖子的Prisma实现方法
方法一:获取完整帖子数据并按点赞数排序
通过include关联点赞计数,同时指定排序规则,既能拿到完整的帖子信息,又能实现按点赞数从多到少排列:
const posts = await prisma.post.findMany({ // 包含每个帖子的点赞数量统计 include: { _count: { select: { likes: true } } }, // 按点赞数量降序排序 orderBy: { _count: { likes: 'desc' } }, // 可选:筛选已发布的帖子 // where: { published: true } });
返回的每条帖子数据中,_count.likes字段即为该帖子的点赞总数。
方法二:分组统计点赞数并排序
如果只需要帖子核心信息和点赞数统计结果,可使用groupBy实现:
const postLikeStats = await prisma.post.groupBy({ // 指定分组字段,必须包含主键id,可按需添加其他字段(如title) by: ['id', 'title'], // 统计每个分组的点赞数量 _count: { likes: true }, // 按点赞数量降序排序 orderBy: { _count: { likes: 'desc' } } });
注意事项
- 需确保Prisma版本在2.10及以上,
_count语法才会生效 - 可根据业务需求添加
where筛选条件,比如仅统计已发布的帖子
内容的提问来源于stack exchange,提问作者Daryl Wong
相关产品推荐
相关产品推荐

