【发布时间】:2014-03-31 05:43:03
【问题描述】:
我有这个 JayData 查询(可以在 JSLQ playground 查到):
northwind.Products
.filter( function( product ) {
return product.ProductName.toLowerCase() in ['tofu'];
} )
.toArray( function( products ) {
console.dir( products );
} );
由于某些未知原因,此查询产生了不正确的过滤器表达式: http://services.odata.org/Northwind/Northwind.svc/Products?$filter=(tolowerProductName%20eq%20%27tofu%27)&$callback=parent.handleJSONP_21&$format=json
我在上面用粗体突出了不正确的参数。
所以你可以看到我们有tolowerProductName,但它应该是tolower(ProductName),所以正确的过滤查询应该是这样的: http://services.odata.org/Northwind/Northwind.svc/Products?$filter=%28tolower%28ProductName%29%20eq%20%27tofu%27%29&$callback=parent.handleJSONP_21&$format=json
有人知道解决方法吗?
更新: 仅当我将 toLowerCase 与“in [array]”一起使用时才会出现问题,因此例如此查询工作正常:
northwind.Products
.filter( function( product ) {
return product.ProductName in ['Tofu'];
} )
.toArray( function( products ) {
console.dir( products );
} );
这个带有 toLowerCase 的查询也可以正常工作:
northwind.Products
.filter( function( product ) {
return product.ProductName.toLowerCase() == 'Tofu';
} )
.toArray( function( products ) {
console.dir( products );
} );
谢谢!
【问题讨论】:
标签: javascript odata jaydata