LoopBack -application의 REST-Api를 통해 특정 모델의 레코드를 쿼리하고 싶습니다. 또한 include 필터를 통해 관련 객체를 포함하고 싶습니다. 이 작동하지만 모든 관련된 개체를 반환합니다. 그것들을 제한 할 수 있고 또한 관련된 물체들의 필드에 의해 그들을 주문할 수 있습니까?루프백에 포함 필터가있는 관계 레코드를 제한하는 방법은 무엇입니까?
모델 :
- DEPARTMENT
Fields:
- id
- name
- ...
Relations_ -> hasMany: Messages
Relations_ -> hasMany: Members
- MESSAGE
Fields:
- id
- senderId
- body
- ...
- MEMBER
Fields:
- id
- email
- ...
조회 : 무엇 내가 달성하고자하는 모든 회원들과 모든 부서를 조회 할 수 있지만 특정 분야 (생성 - 타임 스탬프)로 주문한 경우에만 마지막 메시지
.
http://loopback-server:3000/api/departments?filter[include]=members&filter[include]=messages
이 모든 메시지와 모든 회원들과 모든 부서를 반환합니다
첫 번째 방법
는 GET-요청의 일반 쿼리 문자열 변형 될 수있다. 그러나, 나는 MESSAGE 모델의 특정 필드를 기준으로 정렬 된 마지막 (또는 마지막 5이든, 반환 메시지의 수를 제한하고 싶습니다 나는 또한 jsonfied 쿼리 구문 시도:.
http://loopback-server:3000/api/departments?filter={"include":{"relation": "messages","limit":1}}
을
불행하게도 "limit"매개 변수는 메시지의 관계에 사용되지 않습니다.
다음 변형은 첫 번째 부서 만 반환합니다. 이는 limit-param이 관계 모델이 아닌 departments-model에 적용됨을 의미합니다.
http://loopback-server:3000/api/departments?filter={"include":{"relation": "messages"},"limit":1}
16,그럼 내가 -parameter 범위을 발견하고이 시도 : 이것은 정말 이상한 결과를 제공
http://loopback-server:3000/api/departments?filter={"include":{"relation": "messages","scope":{"limit":1, "skip":0}}}
합니다. 이것은 하나의 메시지를 반환하는 하나의 특정 레코드 (10 개 이상)를 반환하는 대신 부서와 관련된 모든 메시지를 무시합니다. scope-parameter를 제거하면 부서마다 실제로 많은 메시지가 있음을 알 수 있습니다.
내 질문 :
는 (. 더 나은 가독성을 위해 여기에 깨끗한두고 URL 인코딩 할 필요가 내가 좋아하는 모든 특수 문자가있는 URL의 매개 변수가 { ","} 것을 알고) :
어떻게 단일 요청으로 해당 쿼리를 수행 할 수 있습니까?
믿을 수 없습니다 https://loopback.io/doc/en/lb3/Include-filter.html#include-with-filters –