You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Loopback:如何组合Where条件与多字段Order By排序?

解决Person模型查询的排序问题

我懂你现在的困扰——当前的查询能正确过滤出符合条件的Person数据,但结果顺序完全随机,想要按createddate升序、orderdate降序排序,却不知道怎么把过滤条件和排序规则结合起来。

其实问题很简单,你不需要用and来组合Where和Order By,因为这类REST API(看起来是LoopBack框架的风格)里,filter参数是一个包含多维度查询配置的JSON对象,where(过滤条件)和order(排序规则)是同级属性,直接放在同一个filter对象里就行。

正确的查询URL示例

http://127.0.0.1:8082/api/persons?filter={"where":{"and":[{"roleid":"2"},{"personid":{"inq":["1","2","3"]}}]},"order":["createddate ASC", "orderdate DESC"]}

关键细节说明

  • 原有的where过滤逻辑完全保留,不需要修改;
  • 新增的order是一个数组,每个元素对应一条排序规则:
    • createddate ASC:优先按创建日期升序排列(旧数据在前,新数据在后)
    • orderdate DESC:当createddate相同时,再按订单日期降序排列(新数据在前,旧数据在后)

可选优化:URL编码

如果你的请求工具对未编码的JSON字符兼容性较差,可以把filter内的JSON做URL编码,避免{}、:、"这类特殊字符导致解析异常,编码后的URL如下:

http://127.0.0.1:8082/api/persons?filter=%7B%22where%22%3A%7B%22and%22%3A%5B%7B%22roleid%22%3A%222%22%7D%2C%7B%22personid%22%3A%7B%22inq%22%3A%5B%221%22%2C%222%22%2C%223%22%5D%7D%7D%5D%7D%2C%22order%22%3A%5B%22createddate%20ASC%22%2C%22orderdate%20DESC%22%5D%7D

这样请求后,返回的结果就会严格按照你想要的顺序排列啦!

内容的提问来源于stack exchange,提问作者tx fun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:12:40