Я пытаюсь выяснить, как использовать Книжную полку для получения правильных данных, используя схему ниже, но я не могу найти правильный способ использования 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')
}
})
Что мне здесь не хватает?