首页 > 解决方案 > 如何按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"]],
    });
...

标签: mysqlnode.jssequelize.js

解决方案


推荐阅读