breezejs:按客户端属性排序

时间:2014-01-09 16:13:20

标签: javascript breeze

我检索列表中显示的客户实体列表。

但是对于每个客户,我还获得了订单实体列表,这样我就可以为每个客户添加客户端属性 mostExpensivePurchase ,基本上是每个客户最昂贵订单的数量)。我在registerEntityTypeCtor方法的初始化程序中这样做。

好的,现在我的网格显示了客户信息,包括我的 mostExpensivePurchase 值。

但我的用户应该可以排序甚至过滤此列。当我尝试时,我得到了错误: [error] unable to locate property: mostExpensivePurchase on entityType: Customer:#Business.Entities

请注意,过滤和排序是使用仅在本地执行的微风查询完成的。在服务器上执行它是没有意义的,因为该属性仅存在于客户端

我猜错误的发生是因为元数据不包含有关该属性的任何信息。

我应该如何做这项工作?

附注:获取每个客户的订单列表显然不是好的做法,但这是为了说明我的问题。我的列表最多将限制为50个实体。

1 个答案:

答案 0 :(得分:0)

您可以使用sort功能对每个客户的订单列表进行排序:

customers.forEach(function(customer) {
    customer.orders.sort(function(orderA, orderB) { 
        return orderA.mostExpensivePurchase() - orderB.mostExpensivePurchase();
    });
});

排序的文档是here(假设客户实体的订单列表是一个可淘汰的可观察数组)。用于对常规javascript数组进行排序的文档是here