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



当使用Loopback的计数终点时,我们会得到意外且不一致的结果。使用filter[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

奇怪的是,使用'where[companyid]=1'返回正确值7。对http请求对象的仔细检查表明,过滤器[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(正确)

最大的问题是过滤器[where]忽略过滤器。

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

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

最新更新