BreezeJS查询筛选器字符串不是有效的TimeSpan值
BreezeJS query filter string is not a valid TimeSpan value
我试图在字符串列上运行带有筛选器的查询,但在运行时,一些筛选器值(例如"PO Box 27")会导致查询失败。当尝试使用我的查询进行筛选时失败,并显示错误消息:"字符串'PO Box 27'不是有效的TimeSpan值。"
代码:var crmAccountsQuery=实体查询.来自('crmAccountEFs')where(breeze.Predicate.create('address1_Line1','eq','abc'));
return manager.executeQuery(crmAccountsQuery)
.then(function (data) {
crmAccountsObservable(data.results);
return;
})
.fail(queryFailed);
客户端上的bread.js构建了一个类似于的url
http://localhost:49800/breeze/BreezeDb/crmAccountEFs?$filter=(Address1_Line1%20eq%20time'PO%20Box%2027')
时间输入完全错误。
编辑:与:BreezeJS在使用";startsWith";
为了他人的利益,我找到了意想不到的答案。事实证明"from"实体类型的大小写错误(CrmAccountEF),但没有引发错误。服务器处理大小写更改,客户端静默地返回到匿名类型(因为代码试图处理Projection Queries)。这在EntityQuery中_getFromEntityType()。
结果是,当运行查询时,资源名称没有解析为entityType。相反,它被赋予了一个匿名的entityType,这意味着列的类型必须从它的值中推断出来。在我的例子中,前导的"P"表示它被键入为时间。但是,当服务器读取得到的url时,它无法将其转换为正确的类型。
//var query = breeze.EntityQuery.from("Todos"); //Ok
//wrong case => entityType = Anonymous => column's type inferred from value
var query = breeze.EntityQuery.from("todos"); //Error
http://jsfiddle.net/rockresolve/C4A
微风发展:这个微妙的错误很难追踪(可能是由其他字符串类型推断引起的)。是否可以在默认情况下让EntityQuery期望resourceName是有效的entityType,并且仅在设置显式参数时允许Anonymous类型。
- 如何有效地将游戏数据存储在URL查询字符串中
- 如何使用Node.js最有效地解析网页
- jquery代码在Mozilla中有效,但在其他浏览器上无效
- 有效形式-始终只显示1个错误[角度]
- Javascript袖珍参考,第121页:这是怎么回事;猴子补丁”;方法应该有效
- 单击仅在第二次单击后有效
- 什么'是在asp.net MVC中将本地化的resources.resx文件转换为javascript文件的有效
- 为什么自我执行匿名有效
- D3.js生成有效的SVG,但不显示任何内容
- 如何在AngularJS中有效地检查日期是否有效
- 为什么不是'我的函数在解析云代码中工作吗?当我在Angular和Express中测试时,它是有效的
- 滚动在Chrome中有效,但在Firefox或IE中无效
- 有效地获取两个区间之间的随机整数
- Rails将JavaScript对象存储到Model的有效方式
- Javascript XMLHttpRequest——只有第一个POST请求有效
- 使用条件语句,使 jquery fadeIn/fadeOut 仅在视口 >= 480px 时才有效
- 有效负载字节与实际字节不同
- 如何在three.js中有效地使用TraingleStripDrawMode
- 外部链接的Javascript文件赢得't执行,但函数有效
- BreezeJS查询筛选器字符串不是有效的TimeSpan值