Sequelize findAll users with Id but return users from different column

Sequelize findAll users with Id but return users from different column

我的数据库中有一个 followers 连接 table。

followedByUserId是被关注的用户,followingUserId是他们关注的用户。

我正在尝试编写一个 sequelize 查询来查找 followingUserId 中等于 ID 的所有条目,但 returns 坐在 followedByUserId 列。我能做到吗?

查询

    getAllUserFollowing: (_, args) => {
      return DB.models.user.findAll({ // if args.id === 1, return user => 2
        include: [{
          model: DB.models.follower,
          where: {
            followingUserId: args.id, 
          },
          order: [
            ['createdAt', 'DESC'],
          ],
        }]
      })
    },

如果您想通过某个 followingUserId 值限制 Follower 条记录,这意味着您希望获得某个用户的所有关注者。
这意味着您只需要查询所有 Follower 记录,其中 followingUserId 等于给定的用户 ID 并包括关注的用户。
假设您有这些关联:

Follower.belongsTo(User, { foreignKey: 'followingUserId', as: 'FollowingUser' });
Follower.belongsTo(User, { foreignKey: 'followedByUserId', as: 'FollowedByUser' });

您需要这样的查询:

getAllUserFollowing: async (_, args) => {
      return (await DB.models.Follower.findAll({ // if args.id === 1, return user => 2
        where: {
          followingUserId: args.id, 
        },
        include: [{
          model: DB.models.user,
          as: 'FollowedByUser',
        }],
        order: [
          ['FollowedByUser', 'createdAt', 'DESC'],
        ],
      })).map(x => x.FollowedByUser)
    },