最新版本的Breeze似乎打破了executeQueryLocally.例如:
var query = new breeze.EntityQuery()
.from("Items").where('id', '==', id);
return manager.executeQueryLocally(query);
我遇到的问题是在getPredicateFn中的stringEquals调用中.
在上面的简单查询的情况下,在id上调用trim()导致a
5 has no method ‘trim’
例外.
这是Breeze stringEquals函数:
function stringEquals(a, b, lqco) {
if (lqco.usesSql92CompliantStringComparison) {
a = (a || "").trim();
b = (b || "").trim();
}
if (!lqco.isCaseSensitive) {
a = (a || "").toLowerCase();
b = (b || "").toLowerCase();
}
return a == b;
}
编辑
id在Items模型上定义为int,在JavaScript中是数字.早期版本的Breeze没有做stringEquals所以没有尝试修剪数字.
解决方法:
好的,这应该是固定的.请查看v0.73.1. Breeze谓词现在将在比较不同类型的值(如字符串与数字)时执行类型强制.