У меня есть этот запрос JayData (его можно проверить на площадке JSLQ):
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?%24filter=%28tolower%28ProductName%29%20eq%20%27tofu%27%29&%24callback=parent.handleJSONP_21&%24format=json
Кто-нибудь знает обходной путь?
Обновление: проблема возникает только тогда, когда я использую toLowerCase с «в [массиве]», поэтому, например, этот запрос работает нормально:
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 );
} );
Спасибо!