1

如何使用 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 + 查询。如何在 BreezeJS 中使用箭头函数进行查询?因此,有一种方法可以代替表达式构建器:

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

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

4

2 回答 2

6

这篇文章已经过编辑,以纠正我的一个错误,以及从 v 0. 77.1 开始添加到微风中的新功能。

好问题!

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

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

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

通过 Predicates 完成使用轻而易举的组合复杂查询,即 (a || (b && c))。这里有一些很好的例子:

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

此外,这里的第一个微风教程:教程还可以让您尝试这些功能(请参阅步骤 5)。

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

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

于 2012-12-12T20:01:50.520 回答
0

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

于 2012-12-12T20:39:30.670 回答