BreezeJS - 如何编写复杂的查询?

Big*_*Lee 1 jaydata typescript breeze

如何用BreezeJS + OData或WebAPI编写复杂的查询?我希望能够在JayData中使用Northwind作为参考db吗?我的问题是我不知道如何表达两侧都引用数据库的查询(不是与常量相比的字段),还有复杂的逻辑树(a ||(b && c))?

context.Products.filter(function(product) {
   return (product.Unit_Price < product.Category.BudgetPriceLimit) || 
   (product.Category.IsOnSale && product.Supplier.IsFavored)
}).toArray(...)
Run Code Online (Sandbox Code Playgroud)

我的另一个问题是关于TypeScript +查询.如何使用箭头函数进行BreezeJS查询?因此,有一种方式可以说:而不是表达式构建器:

query(Product => Product.Unit_Price < Product.Category.BudgetPriceLimit)
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助,对不起,如果这些是明显的问题.

Jay*_*and 6

这篇文章已被编辑,以纠正我的错误以及从v 0. 77.1添加到微风中的新功能.

好问题!

Breeze现在支持跨属性查询表达式(从v 0.77.1开始),如下所示:

var shippedLateQuery = EntityQuery.from("Orders")
                                  .where("requiredDate",">","shippedDate");
Run Code Online (Sandbox Code Playgroud)

第三个参数(上面的"shippedDate")将被视为属性表达式或文字,具体取决于上下文.通常,如果值可以解释为属性表达式,那么它将被视为文字.在大多数情况下,这种方法效果很好,但您也可以强制进行解释.有关详细信息,请参阅API文档.

通过Predicates完成复杂查询,即(a ||(b && c)),微风.这里有一些很好的例子:

查询示例 - 请参阅具有谓词主题的复合条件

此外,第一个微风教程:教程还允许您试用这些功能(参见步骤5).

我们正在积极关注Typescript并计划完全启用它,但我们仍处于早期阶段.

更新:从v 0.84.4开始,Breeze提供完整的TypeScript支持.