Извлечение глубоко вложенных отношений с помощью bookshelf’s withRelated()

#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() .

Пожалуйста, разместите все модели, чтобы мы могли их проверить.