del*_*ete 5 loopback strongloop loopbackjs
我想通过LoopBack -application中的REST-Api查询特定模型的记录.另外,我想通过include-filter包含相关对象.这很好,但返回所有相关的对象.是否可以限制它们,还可以通过相关对象的字段对它们进行排序?
- DEPARTMENT
Fields:
- id
- name
- ...
Relations_ -> hasMany: Messages
Relations_ -> hasMany: Members
- MESSAGE
Fields:
- id
- senderId
- body
- ...
- MEMBER
Fields:
- id
- email
- ...
Run Code Online (Sandbox Code Playgroud)
我想要实现的是查询所有部门及其所有成员,但只查询特定字段(created-timestamp)排序的最后一条消息.
第一种方法可能是GET-Request的普通查询字符串变体:
http://loopback-server:3000/api/departments?filter[include]=members&filter[include]=messages
Run Code Online (Sandbox Code Playgroud)
这将返回包含所有消息和所有成员的所有部门.但是,我想将返回消息的数量限制为最后一个(或最后5个或其他任何内容,按MESSAGE模型的特定字段排序).
我还尝试了jsonfied查询语法:
http://loopback-server:3000/api/departments?filter={"include":{"relation": "messages","limit":1}}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这里不使用"限制"参数来表示消息的关系.
以下变量将仅返回第一个部门,表示limit-param应用于departments-model,而不是关系模型.
http://loopback-server:3000/api/departments?filter={"include":{"relation": "messages"},"limit":1}
Run Code Online (Sandbox Code Playgroud)
然后我发现了范围参数并尝试了这个:
http://loopback-server:3000/api/departments?filter={"include":{"relation": "messages","scope":{"limit":1, "skip":0}}}
Run Code Online (Sandbox Code Playgroud)
这给出了一个非常奇怪的结果.这省略了与部门相关的所有消息,而不是一条返回一条消息的特定记录(它有超过10条),这是我所期望的.删除scope-parameter表明部门确实每个都有许多消息.
(我知道带有所有这些特殊字符的URL的参数,如{",:"}需要进行url编码.为了更好的可读性,我把它留在这里干净)
如何通过单个请求实现该查询?
目前还无法通过关系的属性来查询关系。至于限制,您最后的范围方法应该稍微修改一下:
"scope":{{"include":{"relation": "messages","limit":1, "skip":0}}}
Run Code Online (Sandbox Code Playgroud)
在这里您可以阅读有关按关系属性进行查询的信息:
https://github.com/strongloop/loopback/issues/517
| 归档时间: |
|
| 查看次数: |
1353 次 |
| 最近记录: |