结果不一致使用环回计数端点与过滤器+在哪里与哪里

时间:2016-05-27 16:39:19

标签: rest httprequest loopbackjs strongloop

使用Loopback的计数结束点时,我们会收到意外且不一致的结果。使用过滤器[where] 始终返回表中的总行数,忽略任何过滤器。例如,以下调用始终返回值 9 ,这是不正确的(给定以下数据):

/api/class/count?filter[where][companyrowid]=1

班级表数据(MySQL)

rowid  description         companyrowid
3367   test1                0             
3366   test2                0             
3364   Asia Division        1             
3365   Australia Division   1             
3362   Canada Division      1             
3363   Europe Division      1             
3359   US East Division     1             
3361   US Midwest Division  1             
3360   US West Division     1

奇怪的是,使用'其中[companyid] = 1' 会返回正确值7 。仔细检查http请求对象会显示过滤器[where] [...] 其中[..] 过滤器实际上分别存储并产生不同的结果:

/api/class/count?filter[where][companyrowid]=1
  1. req.query.filter.where = {companyid:" 1"}
  2. req.query.where = undefined
  3. 结果:9(不正确)
  4. /api/class/count?where[companyrowid]=1

    1. req.query.filter.where = undefined
    2. req.query.where = {companyid:" 1"}
    3. 结果:7(正确)
    4. 最大的问题是过滤器[where] 忽略过滤器。

1 个答案:

答案 0 :(得分:3)

count()方法只接受where子句而不是过滤器。 所以你的REST API应该是这样的

/api/class/count?[where][companyrowid]=1