Книжная полка один ко многим на третьем соединительном столе - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь выяснить, как использовать Книжную полку для получения правильных данных, используя схему ниже, но я не могу найти правильный способ использования through для получения данных.user является членом только одного org, org имеет множество users, а таблица members используется для связи этих двух.Я могу правильно получить members от org, а также user и org от member, но я не могу получить org от user.Я получаю следующую ошибку Cannot convert undefined or null to object. Есть идеи?

User schema
id: primary
name: string

Org schema
id: primary
name: string

Member schema
id: primary
user_id: fk to User
org_id: fk to Org

Ниже приведен код для моделей

const bookshelf = require('../bookshelf')

const User = bookshelf.Model.extend('User', {
  tableName: 'users',
  org: function () {
    return this.belongsTo('Org').through('Member')
  }
})

const Org = bookshelf.Model.extend('Org', {
  tableName: 'orgs',
  members: function () {
    return this.belongsToMany('User', 'Member')
  }
})

const Member = bookshelf.Model.extend('Member', {
  tableName: 'members',
  org: function() {
      return this.belongsTo('Org')
  },
  user: function() {
      return this.belongsTo('User')
  }
})

РЕДАКТИРОВАТЬ: Если я изменить User на следующее, я получу обратно массив Orgs, но этоневерно, поскольку User может быть членом только одного Org.

const User = bookshelf.Model.extend('User', {
  tableName: 'users',
  org: function () {
    return this.belongsToMany('Org', 'Member')
  }
})

Что мне здесь не хватает?

...