我正在尝试使用以下链接中的文档创建一个包含多个breeze.js passthrough谓词的odata网址:http://www.getbreezenow.com/documentation/query-using-json。
然而,生成的url看起来不像odata url,例如:
var query = breeze.EntityQuery.from('User').using(this.manager).where("{ { 'userName': { '=': '123456' } } }");
var url = query._toUri(this.manager);
网址为"User?$filter=%7B%20%7B%20'userName'%3A%20%7B%20'%3D'%3A%20'123456'%20%7D%20%7D%20%7D&$orderby=UserName"
而不是"User?$filter=(UserName eq '123456')&$orderby=UserName"
。
答案 0 :(得分:0)
我认为你不想要一个passthru查询,因为这只是通过你的where子句完整无需任何处理。当你引用整个where子句时会发生这种情况。
如果您希望将查询转换为“odata”语法,请尝试以下操作:
var query = breeze.EntityQuery.from('Customers').using(em)
.where({ 'userName': { '==': '123456' } });
请注意,'where'参数不是引号(它是标准的javascript对象),运算符是'==',而不是'=';
甚至更简单
var query = breeze.EntityQuery.from('Customers').using(em)
.where( { userName: '123456' });
可以从 任何 breeze查询生成两种形式的网址。 OData表单和JSON表单。如果你想要OData(默认值),那么你要么什么都不做,因为它是默认值,或者你可以明确告诉breeze:
breeze.core.config.initializeAdapterInstance("uriBuilder", "odata");
如果你想要json表单,你可以使用
breeze.core.config.initializeAdapterInstance("uriBuilder", "json");
您也可以添加一行来使用'json'uriBuilder。如果你想要OData网址,只需省略这一行。您仍然可以通过json语法构造查询,但URL将使用OData语法输出。
Json表单(或uri)对非OData服务器很有用。