Breezejs:当ResourceName包含'?'时,格式错误的OData查询

时间:2013-06-07 17:59:39

标签: odata breeze

使用Breeze 1.3.5

在“orders for Chai”示例后,我尝试形成类似的查询。但是,我发现当resourceName包含“?”时,未正确添加其他OData参数。例如,如果我执行以下操作:

var query = new breeze.EntityQuery('Products/?categoryId=1234')
            .top(10);

它发送一个如下所示的请求:

http://domain/controller/Products/?categoryId=1234?$top=10

$ top应& $ top

由于使用了''而不是'& ',我的上下文控制器会显示一个明显无效的categoryId,如下所示:

1234?$top=10

我做错了什么或者这只是一个缺陷?任何想法或变通方法将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:0)

对于Breeze, resourceName (EntityQuery中'from'子句的值)是 DataService.serviceName 之后和“?”之前的所有内容。

正如您所发现的,您可以通过 EntityQuery.withParameters 方法传递任何参数(即在?之后的内容)。 EntityQuery的'where','top','skip','select','expand'等子句也作为参数传递。

这完全是设计的,应该是任何无法使用这些规则构建的网址。

总结一下,一个微风查询网址看起来像

{serviceName} / {resourceName}?{参数 - 以'&'}分隔

其中

{serviceName}:  DataService.serviceName
{resourceName}: value of EntityQuery.from clause
{parameters}:   serialized and & delimited value of the rest of the EntityQuery including any withParameter values.