繁体   English   中英

如何在微风中对扩展的实体使用谓词

[英]How to use predicates on expanded entities in breeze

可以说我有一个名为Foo实体,它有一个Bars列表。 Bars还包含一个名为isDeleted的字段,该字段指示特定的栏已被软删除。 我希望能够查询特定的Foo并使用Breeze过滤掉Javascript文件内部被软删除的Bars 我以为这会工作...

var query = breeze.EntityQuery.from('Foo')
        .where('Id', '==', id).and('Bars.IsDeleted', '==', false)
        .expand('Bars');

但事实并非如此,有人可以告诉我如何轻松进行此操作吗? 如果唯一的解决方案是在BreezeController编码方法并使用标准的LINQ语法,那么我很好,但是我只想看看它是否首先在Breeze中可以工作。

查询上的多个.where()会自动“与”在一起 如果要显式地执行此操作,则需要使用breeze.Predicate对象作为where参数,如下所示:

var query = breeze.EntityQuery.from('Foo').expand('Bars')
    .where(new breeze.Predicate('Id', 'eq', id)
                     .and('Bars.IsDeleted', 'eq', false));

您还可以选择对Predicate对象使用.or或任何其他方法,其中大多数方法都正确链接。

编辑 :这是使用多个.where调用的示例:

    var query = breeze.EntityQuery.from('Foo').expand('Bars')
                .where('Id', 'eq', id)
                .where('Bars.IsDeleted', 'eq', false);

目前,Breeze不支持“展开”过滤。 即仅返回符合特定条件的“扩展”实体。 这是因为很少有后端服务器和持久性库提供支持此功能的机制。

但是,您可能要做的就是反转查询以获取所需的内容。

var query = breeze.EntityQuery.from('Bars').expand('Foo')
    .where(new breeze.Predicate('Foo.Id', 'eq', id)
                 .and('IsDeleted', 'eq', false));

假设每个“ Bar”实体都有一个标量“ Foo”属性。

这将仅返回您希望每个“酒吧”及其关联的“ Foo”实体。 之所以可行,是因为Breeze允许嵌套标量谓词。 即“ Foo.Id”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM