如何使用 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)
感谢您的帮助,抱歉,如果这些问题很明显。
最佳答案
这篇文章已经过编辑以纠正我的错误以及从 v 0. 77.1 开始添加到 breeze 的新功能。
好问题!
Breeze 现在支持跨属性查询表达式(从 v 0.77.1 开始),例如:
var shippedLateQuery = EntityQuery.from("Orders")
.where("requiredDate",">","shippedDate");
第三个参数(上面的“shippedDate”)将根据上下文被视为属性表达式或文字。通常,如果值可以被解释为属性表达式,否则它将被视为文字。在大多数情况下这很有效,但您也可以强制解释。有关详细信息,请参阅 API 文档。
组合复杂查询,即 ( a || (b && c)),轻而易举地通过谓词完成。这里有一些很好的例子:
Query Examples - see the Compound Conditions with Predicates topics
此外,第一个 Breeze 教程在这里:Tutorial还可以让您试用这些功能(请参阅第 5 步)。
我们正在积极关注 Typescript 并计划全面启用它,但我们仍处于该过程的早期阶段。
更新:从 v 0.84.4 开始,Breeze 提供完整的 TypeScript 支持。
关于typescript - BreezeJS - 如何编写复杂的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13838975/