Javascript 是否有任何方法可以使用Breeze库形成Odata筛选器,如$filter=Emails/any(s:s eq';somestring';)?

Javascript 是否有任何方法可以使用Breeze库形成Odata筛选器,如$filter=Emails/any(s:s eq';somestring';)?,javascript,odata,breeze,Javascript,Odata,Breeze,例如,我的模型结构如下所示: { "@odata.context": "serviceRoot/$metadata#People", "@odata.nextLink": "serviceRoot/People?%24skiptoken=8", "value": [ { "@odata.id": "serviceRoot/People('russellwhyte')", "Emails": [ "Russell@example.com", "Russell

例如,我的模型结构如下所示:

{
"@odata.context": "serviceRoot/$metadata#People",
"@odata.nextLink": "serviceRoot/People?%24skiptoken=8",
"value": [
    {
        "@odata.id": "serviceRoot/People('russellwhyte')",
        "Emails": [ "Russell@example.com", "Russell@contoso.com" ]
    }, 
    ...
    ]
}
$filter=Emails/any(s: s eq 'Russell@contoso.com')
我想询问所有拥有Russell@contoso.com“他们的电子邮件列表中的电子邮件。(请注意,电子邮件是基本类型字符串的集合。)

在处理复杂对象的集合时,Breeze似乎只能这样做:

var query = EntityQuery.from("People")
.where("Email", "any", "fldname",  "eq", "Russell@contoso.com");  
这里的“fldname”是一个字段,应该位于电子邮件类型中

但是,如果我想比较像字符串这样的基本类型,而里面没有任何字段,该怎么办?在这种情况下,OData查询如下所示:

{
"@odata.context": "serviceRoot/$metadata#People",
"@odata.nextLink": "serviceRoot/People?%24skiptoken=8",
"value": [
    {
        "@odata.id": "serviceRoot/People('russellwhyte')",
        "Emails": [ "Russell@example.com", "Russell@contoso.com" ]
    }, 
    ...
    ]
}
$filter=Emails/any(s: s eq 'Russell@contoso.com')
但是有没有办法使用Breeze形成这个查询?

是和否

不,您不能使用breeze查询语言编写它,因为它不理解对返回字符串数组的属性进行过滤

但是,您可以使用breeze查询将任何URL发送到服务器。如果可以手动构造OData服务器将正确解释的URL,请直接发送

var qUrl = "People/?$filter=Emails/any(s: s eq 'Russell@contoso.com')";
var q = breeze.EntityQuery.from(qUrl);
manager.executeQuery(q).then(...).catch(...);