Sequelize - 两个ID上的双连接表

时间:2014-10-27 23:12:01

标签: javascript node.js postgresql sequelize.js

如果我有一个"用户"表和"关注" table("关注"有UserId和FollowedId,两者都是指用户"用户"表)

"追随中"基本上当一个用户"跟随"另一个用户

如何设置关联,以便在使用Followings Model查询并包含Users模型时,它将包含BOTH列的嵌套信息?

示例:

Users
| id | name | email | etc |

Followings
| id | UserId | FollowedId |

UserId和FollowedId都与用户"用户"表

我试过了:

User.hasMany(Following);
Following.belongsTo(User, {foreignKey: 'FollowedId'});
Following.belongsTo(User, {foreignKey: 'UserId'});

但是当我使用时:

Followings.find({
  include: User
})

它只会在UserId而不是FollowedID用户上嵌套信息。

如果这令人困惑,请提出问题,谢谢!

编辑:使用PostgreSQL

1 个答案:

答案 0 :(得分:3)

我认为如果你给belongsTo命名,你可以在你的包含中指定关系。如下所示:

User.hasMany(Following);
Following.belongsTo(User, {foreignKey: 'FollowedId', as: 'Followee'});
Following.belongsTo(User, {foreignKey: 'UserId', as: 'User'});

使用包括:

Followings.find({
  include: [
    { model: User, as: 'Followee' },
    { model: User, as: 'User' },
  ]
})