Javascript 显示reduce函数CouchDB的正确结果

Javascript 显示reduce函数CouchDB的正确结果,javascript,mapreduce,couchdb,Javascript,Mapreduce,Couchdb,我有一个名为“订单”的数组的“用户”文档。每个订单都有“标题”、“日期”、“费用”等属性。我想为数据库中的每个用户计算每个订单费用的总和 这是映射函数: map: function(doc) { if (doc.Doc_type && doc.Doc_type === 'user' && doc.Orders) { for (var i = 0; i < doc.Orders.length; i++)

我有一个名为“订单”的数组的“用户”文档。每个订单都有“标题”、“日期”、“费用”等属性。我想为数据库中的每个用户计算每个订单费用的总和

这是映射函数:

map: function(doc) {
            if (doc.Doc_type && doc.Doc_type === 'user' && doc.Orders) {
                for (var i = 0; i < doc.Orders.length; i++) {
                    emit([doc.Orders[i].Order_date], doc.Orders[i].Fee);
                }
            }
        }
reduce: function (keys, values, rereduce){
            var sum = 0;
            for(var i=0,fee;fee=values[i];i++){
                sum+=fee;
            }
            return {
                Transactions: sum,
                Revenue: 10
            };
        }
我得到的结果是:

{"Transactions":"0[object Object][object Object]","Revenue":10}}

为简单起见,我不使用特定的数据结构,但名称应该是自我解释的

发出键/值对:username/:fee可能您必须像在代码映射中那样,为每个顺序将其解析为整数/浮点:

for(every_order) {
  emit(username, fee)
}
对于索引中的每个用户名,您将获得1个或多个订单行。如果您使用?key=:username请求视图,您将获得响应结果数组中的所有订单行。现在,您可以在客户端汇总费用,例如在浏览器中,或者按照您的要求,使用内置的reduce功能在服务器端汇总费用

_sum
每个用户名将获得一行,订单费用总额作为值