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

我一直试图让它工作一段时间,并希望获得一些见解。


目标:我正在尝试根据他们目前拥有的喜欢数量对帖子进行排序。


当前的:


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",

为了获得正确的帖子顺序,有人对我可能做错了什么有任何建议吗?


再次感谢所有的帮助和提示。


叮当猫咪
浏览 98回答 1
1回答

哔哔one

因为您使用聚合函数,所以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']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript