mysql - 如何按sequelize中相关对象的数量排序?
问题描述
首先,我为这个简单的问题道歉。
我正在通过 NodeJs 编写代码。
我通过sequelize在'User'和'Post'表之间使用'belongsToMany'创建了一个名为'Like'的表,带有PostId和UserId。
我想按喜欢的列数排序。
但是我不太擅长使用sequelize。任何帮助,将不胜感激。
邮政
static associate(db) {
db.Post.belongsTo(db.User);
db.Post.hasMany(db.Comment);
db.Post.belongsToMany(db.User, { through: "Like", as: "Likers" });
}
用户
static associate(db) {
db.User.hasMany(db.Post);
db.User.hasMany(db.Comment);
db.User.hasMany(db.ReComment);
db.User.belongsToMany(db.Post, { through: "Like", as: "Liked" });
}
...在帖子路由器中..
...
const posts = await Post.findAll({
where,
limit: 10,
include: [
{
model: User,
attributes: ["id", "nickname", "profileImg", "myIntroduce"],
},
{
model: Comment,
attributes: ["id"],
include: [
{
model: ReComment,
attributes: ["id"],
},
],
},
{
model: User, // 좋아요 누른 사람
as: "Likers",
attributes: ["id"],
},
],
// order: [["createdAt", "DESC"]],
attributes: [
"Likers",
[
sequelize.literal(
"(SELECT COUNT(*) FROM posts WHERE posts.id = posts.Likers.postId"
),
"LikeCount",
],
],
order: [[sequelize.literal("LikeCount"), "DESC"]],
});
...
解决方案
推荐阅读
- html - Why not use
- reactjs - Property 'token' is missing in type 'PropsWithChildren
' but required in type '{ token: string; }' - javascript - Bootstrap-vue closing modal scrolls to top after using navbar link
- quarkus - Force restart when resource files are updated
- odoo - Sale Order count is not displayed in portal home view in custom layout odoo14
- mongodb - Azure CosmosDb MongoAPI nearSphere return nothing
- grouping - How to get nodes grouped in XSLT 1.0
- python - 在python中总结小时和分钟的列
- c++ - C++ template | error: parameter packs not expanded with '...':
- c - How to create recursion for vector addition?