【发布时间】:2017-07-12 05:59:44
【问题描述】:
我想通过 LoopBack 应用程序中的 REST-Api 查询来自特定模型的记录。我还想通过包含过滤器包含相关对象。 这工作正常,但返回所有相关对象。是否可以限制它们并通过相关对象的字段对其进行排序?
型号:
- DEPARTMENT
Fields:
- id
- name
- ...
Relations_ -> hasMany: Messages
Relations_ -> hasMany: Members
- MESSAGE
Fields:
- id
- senderId
- body
- ...
- MEMBER
Fields:
- id
- email
- ...
查询:
我想要实现的是查询所有部门及其所有成员,但只查询由特定字段排序的最后一条消息(创建时间戳)。
第一种方法可能是 GET-Request 的普通查询字符串变体:
http://loopback-server:3000/api/departments?filter[include]=members&filter[include]=messages
这将返回所有部门以及所有消息和所有成员。但是,我想将返回消息的数量限制为最后一条(或最后 5 条或其他任何内容,按 MESSAGE-model 的特定字段排序。
我也试过jsonfied查询语法:
http://loopback-server:3000/api/departments?filter={"include":{"relation": "messages","limit":1}}
不幸的是,这里没有使用“limit”参数来表示消息的关系。
以下变体将仅返回第一个部门,意味着限制参数应用于部门模型,而不是关系模型。
http://loopback-server:3000/api/departments?filter={"include":{"relation": "messages"},"limit":1}
然后我发现了 scope 参数 并尝试了这个:
http://loopback-server:3000/api/departments?filter={"include":{"relation": "messages","scope":{"limit":1, "skip":0}}}
这给出了一个非常奇怪的结果。这会省略与部门相关的所有消息,而不是返回一条消息的特定记录(它有超过 10 条),这是我所期望的。去掉 scope-parameter 表明各个部门确实有很多消息。
(我知道带有所有这些特殊字符(如 {",:"} >
如何通过单个请求实现该查询?我的问题:
【问题讨论】:
标签: loopbackjs strongloop loopback