Я хочу запросить записи из определенной модели с помощью REST-Api от LoopBack -Приложение. Также я хочу включить связанные объекты через include-фильтр. Это прекрасно работает, но возвращает ВСЕ связанные объекты. Можно ли их ограничить, а также упорядочить их полем связанных объектов?Как ограничить записи отношений с включенным фильтром в loopback?
Модель:
- DEPARTMENT
Fields:
- id
- name
- ...
Relations_ -> hasMany: Messages
Relations_ -> hasMany: Members
- MESSAGE
Fields:
- id
- senderId
- body
- ...
- MEMBER
Fields:
- id
- email
- ...
запросы:
Что я хочу добиться того, чтобы запросить все отделы со всеми своими членами, но только последнее сообщение по заказу конкретного поля (сотворено метками времени).
Первый подход может быть простой строка запроса вариантом GET-запрос:
http://loopback-server:3000/api/departments?filter[include]=members&filter[include]=messages
Это будет возвращать все отделы со всеми сообщениями и все членами. Тем не менее, я хотел бы ограничить число возвращаемых сообщений до последнего (или 5 последних или любой другой, отсортированные по конкретной области MESSAGE-модели
Я также попытался jsonfied синтаксис запроса:.
http://loopback-server:3000/api/departments?filter={"include":{"relation": "messages","limit":1}}
К сожалению, параметр «limit» здесь не используется для связи сообщений.
Следующий вариант вернет только первый отдел, это означает, что limit-param применяется к модели подразделений, а не к модели отношений.
http://loopback-server:3000/api/departments?filter={"include":{"relation": "messages"},"limit":1}
Тогда я обнаружил сферы параметрического и попытался это:
http://loopback-server:3000/api/departments?filter={"include":{"relation": "messages","scope":{"limit":1, "skip":0}}}
Это дает очень странный результат. Это означает, что все сообщения, связанные с отделами, вместо одной конкретной записи, возвращающей одно сообщение (у него более 10), я бы ожидал. Удаление параметра scope показывает, что департаменты действительно имеют много сообщений каждый.
(я знаю, что параметры в URL со всеми этими специальными символами, такими как { «:»} должны быть URL-закодирован я оставляю его в чистоте здесь для лучшей читаемости.)
Мой вопрос:
Как достичь этого запроса с помощью одного запроса?
Пожалуйста, обратите внимание на https://loopback.io/doc/en/lb3/Include-filter.html#include-with-filters –