Bookshelf.js多对多的关系

时间:2015-04-13 15:51:55

标签: postgresql bookshelf.js

我正在努力弄清楚如何与Bookshelf.js和postgres建立深厚的关系。

假设我有三个模型,UserOrgUserRole ... UserOrg具有多对多关系。 UserRoleUser通过Org是多对多的。在概念上我在努力的地方是如何实现:User 1属于Org AOrg B; User 1 Admin应该是Org A中的Org B角色,而不是{{1}}

我无法在bookshelf.js文档或互联网中找到任何示例或提示,文档总是指在单数表中加入表,而不是表。推动正确的方向将非常受欢迎。

1 个答案:

答案 0 :(得分:0)

鉴于上述情况,关系是:

  • "用户" belongsToMany" Org"
  • "用户" hasMany" UserRole"
  • "组织" belongsToMany"用户"
  • "组织" hasMany" UserRole"
  • "的UserRole" belongsTo" Org"
  • "的UserRole" belongsTo"用户"

以下是如何加载" UserRoles"对于"用户" by" Org":

UserRole.forge({
    name: 'Admin',
    user_id: 1,
    org_id: 2
})
.save()
.then(function () {
    User.forge({ id: 1 }).fetch().then(function (user) {
        user.user_roles().query({ where: { org_id: 2 }}).fetch().then(function (user_roles) {
            console.log('user_roles: %j', user_roles);
        }),
    });
});