一段时间以来,我一直试图让它发挥作用,并希望获得一些见解。
目标:我正在尝试按照帖子目前拥有的点赞数量对帖子进行排序。
当前的:
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",
任何人都有任何建议我可能会做错什么才能使我的帖子顺序正确?再次感谢所有的帮助和提示。
最佳答案
因为您使用聚合函数 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']
关于javascript - 使用 Sequelize 按连接表计数列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64431201/