jts*_*ven 29 node.js sequelize.js
我有三个主表的数据库:users,teams,和folders两个结表连接,users_teams和teams_folders.用户和团队之间以及团队和文件夹之间存在多对多关系(用户可以在多个团队中,团队可以拥有多个文件夹).
Sequelize在管理用户团队和团队文件夹关系方面做得非常出色,但我找不到在用户和文件夹之间建立关系的方法.
有没有办法连接两个连接表而不诉诸原始SQL?
似乎没有办法优雅地或以合理的步骤完成.我曾尝试类似的方法user.getFolders(),Folder.findAll({ include: [User] })但Sequelize似乎并不能够理解三个层次结构.
Jan*_*ier 51
假设有以下关系:
User.belongsToMany(Team, { through: 'users_teams'});
Team.belongsToMany(User, { through: 'users_teams'});
Folder.belongsToMany(Team, { through: 'teams_folders'});
Team.belongsToMany(Folder, { through: 'teams_folders'});
Run Code Online (Sandbox Code Playgroud)
您应该能够使用嵌套包含一次性加载所有内容:
User.findAll({
include: [
{
model: Team,
include: [
Folder
]
}
]
});
Run Code Online (Sandbox Code Playgroud)
你似乎已经在你的帖子中给出了你的例子:) 您需要更改的唯一事情是不是直接传递User模型include,而是传递具有model属性和另一个嵌套include属性的对象
注意以下几点:
User.belongsToMany(Team, {
through: 'users_teams',
foreignKey: 'user_id',
otherKey: 'team_id'
});
Team.belongsToMany(User, {
through: 'users_teams',
foreignKey: 'team_id',
otherKey: 'user_id'
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25595 次 |
| 最近记录: |