#node.js #express #bookshelf.js
#node.js #выразить #bookshelf.js
Вопрос:
У меня есть User
кто может belongToMany
Group
, Group
can belongToMany
ReviewQueueStatus
, который hasMany
ReviewQueues
, который в свою очередь belongsToMany
SavedSearches
.
Я пытаюсь получить глубоко вложенные отношения для пользователя, выполнив
return app.models.User.forge({
id: req.params.id
})
.fetch( { withRelated: ["groups.review_queue_statuses.review_queues.saved_searches"]})
В настоящее время это происходит только на один уровень глубже. (т. Е.: я могу получить все группы, к которым принадлежит пользователь, и вложенный в каждую группу список всех ReviewQueueStatus
). У ReviewQueueStatus
объекта есть ReviewQueues
свойство, но это пустой список. Однако при просмотре записей строк базы данных этого не должно быть.
Прежде чем я опубликую весь код и связанные модели БД, возможно ли перейти к глубокой вложенности подобным образом или bookshelf может иметь глубину только на один уровень? Я не смог ничего найти в документах bookshelf (https://bookshelfjs.org/api.html), в котором упоминается что-либо о извлечении глубоко вложенных отношений.
Спасибо, что взглянули.
Ответ №1:
Да, bookshelf может достигать любого уровня отношений, поскольку у вас правильно сопоставлены модели. Говоря правильно, я имею в виду, что вам нужно установить правильную ассоциацию (один к одному, один ко многим и т.д.), указывающую на правильные внешние ключи, и ссылаться на них с тем же именем в withRelated
опции в fetch()
или fetchAll()
.
Пожалуйста, разместите все модели, чтобы мы могли их проверить.