如何使用REST样式语法在环回中形成复杂的过滤器

时间:2017-01-10 21:26:15

标签: rest conditional-statements loopbackjs

为了保持一致性,我们需要在调用Loopback apis时使用REST URL样式语法(而不是JSON样式语法)。但是,我们很难构建包含'和'和'或'运算符的复杂'where'过滤器。似乎没有办法对混合条件逻辑进行分组。例如,我们如何使用REST语法创建此SQL语句的等效项:

SELECT * FROM Customer WHERE (type='retail' OR type='nonprofit') AND terms='monthly'

例如,这不起作用:

/api/customer?filter[where][or][0][type]=retail&filter[where][or][1][type]=nonprofit&filter[where][and][2][terms]=monthly

2 个答案:

答案 0 :(得分:0)

尝试如下所示:

   /api/customer?filter={
   "where": {
       "or": [ 
           {"type":"retail"}, 
           {"type":"nonprofit"},
           "and": [{"terms":"monthly}]
           ]
       } 
   }

在“更复杂的示例”中看看Where filter

答案 1 :(得分:0)

我正在尝试解决类似的问题。看起来您很接近,但我相信 and 实际上是顶级比较,并且您正在编写查询,就像 or 是。所以也许..

/api/customer?filter[where][and][0][or][0][type]=retail&filter[where][and][0][or][1][type]=nonprofit&filter[where][and][1][terms]=monthly

我无法确认这一点,因为我没有可以测试它的正常运行的本地环境。让我们知道它是否有效。谢谢!

更新:这个问题好像已经有人回答了。 https://github.com/strongloop/loopback/issues/3017 BLUF,在环回中是不可能的。使用字符串化 JSON 选项。