为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Sequalize 按连接表计数列排序

使用 Sequalize 按连接表计数列排序

叮当猫咪 2023-05-25 16:04:57
我一直试图让它工作一段时间,并希望获得一些见解。目标:我正在尝试根据他们目前拥有的喜欢数量对帖子进行排序。当前的:const posts = await db.post.findAll({    include: [ db.user, { model: db.like_post, where: { user_id: user }, required: false } ],    where: { category },    group: [ [ sequelize.col('like_posts.post_id') ] ],    order: [ [ sequelize.fn('count', sequelize.col('like_posts.post_id')), 'DESC' ] ]});我目前收到的错误是:"message": "column \"post.id\" must appear in the GROUP BY clause or be used in an aggregate function",为了获得正确的帖子顺序,有人对我可能做错了什么有任何建议吗?再次感谢所有的帮助和提示。
查看完整描述

1 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

因为您使用聚合函数,所以count在 SELECT 和 FROM 之间列出的所有其他字段都应该在 GROUP BY 中列出。如果您只想post按相关记录的计数进行排序like_post并保留所有字段post以及包含的字段,user您应该在选项中使用原始子查询order

是这样的:

order: [[sequelize.literal('(select count(*) from like_post where like_post.post_id=post.id)', 'DESC']



查看完整回答
反对 回复 2023-05-25
  • 1 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信