使用带有过滤器+Where 与 Just Where 的环回计数端点的不一致结果

Inconsistent Results Using Loopback Count End-Point With Filter+Where vs. Just Where

在使用 Loopback 的 count 端点时,我们得到了意外且不一致的结果。使用 filter[where] 始终 returns table 中的总行数,忽略任何过滤器。例如,以下调用总是 returns 9 的值,这是不正确的(给定以下数据):

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

Class Table数据(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

奇怪的是,使用 'where[companyid]=1' returns 7 的正确值。仔细检查 http 请求对象会发现 filter[where][...]where[..] 过滤器实际上是分开存储的,并且产生不同的结果:

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

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

  1. req.query.filter.where = 未定义
  2. req.query.where = {companyid: "1"}
  3. 结果:7(正确)

最大的问题是 过滤器[其中] 忽略了过滤器。

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

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