BreezeJS-如何编写复杂的查询



如何使用BreezeJS+OData或WebAPI编写复杂查询?我想在JayData中使用这样的东西,使用Northwind作为参考数据库?我的问题是,我不知道如何表达既引用数据库(与常量相比不是字段)又有复杂逻辑树(a||(b&&c))的查询?

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

我的另一个问题是关于TypeScript+查询。如何使用Arrow函数进行BreezeJS查询?因此,有一种方法可以代替表达式生成器:

query(Product => Product.Unit_Price < Product.Category.BudgetPriceLimit)

谢谢你的帮助,如果这些都是显而易见的问题,很抱歉。

这篇文章经过编辑,以纠正我的一个错误,以及从v0开始添加到bread的新功能。77.1.

好问题!

Breeze现在支持跨属性查询表达式(从v0.77.1开始),例如:

var shippedLateQuery = EntityQuery.from("Orders")
.where("requiredDate",">","shippedDate");

第三个参数(上面的"shippedDate")将被视为属性表达式或文字,具体取决于上下文。一般来说,如果该值可以被解释为属性表达式,那么它就是,否则它将被视为文字。在大多数情况下,这很有效,但您也可以强制进行解释。有关更多详细信息,请参阅API文档。

通过谓词可以轻松地组合复杂的查询,即(a||(b&&c))。这里有一些很好的例子:

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

此外,这里的第一个简单教程:教程还可以让您试用这些功能(请参见步骤5)。

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

更新:自v0.84.4起,Breeze提供完整的TypeScript支持

在Breeze支持字段对字段比较之前,您可以考虑在服务器端控制器上编写自定义查询方法,这些方法可以构造LINQ查询,从而进行字段对字段的比较。为了给客户端更多的灵活性,它可以传递控制器方法解释的参数来影响查询构造;使用withParameters子句。您可以组合OData查询子句和withParameters子句。

相关内容

  • 没有找到相关文章

最新更新