2015-04-13 3 views
1

Я изо всех сил пытаюсь понять, как делать глубокие отношения с Bookshelf.js и postgres.Bookshelf.js отношения многие-ко-многим

Скажем, у меня есть три модели, User, Org и UserRole ... User и Org имеют много-ко-многим. UserRole и User - это многие ко многим через Org. Где я боюсь концептуально, как это сделать: User 1 относится к Org A и Org B; User 1 должна быть Admin роль в Org A, но не в Org B

Я не смог найти какие-либо примеры или намеки в документации bookshelf.js или межсеть, и документация всегда относится к вступлению в таблицу в единственном числе , а не таблицы. Было бы высоко оценено толчок в правильном направлении.

ответ

0

Учитывая вышесказанное, отношения являются:

  • "Пользователь" belongsToMany "Org"
  • "Пользователь" hasMany "UserRole"
  • "Org" belongsToMany "Пользователь"
  • «Org "hasMany" UserRole "
  • " UserRole "belongsTo" Org "
  • "UserRole" belongsTo "Пользователь"

И вот, как загрузить "UserRoles" для "Пользователь" на "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); 
     }), 
    }); 
});