nodejs

时间:2015-07-16 08:01:52

标签: node.js callback mongoose waterfall

我正在使用MEAN(Mongo Express Angulars NodeJs)进行项目。问题是我必须为从查询对象接收的数据添加一个额外的属性。并使用完全旧的数据阵列创建新的数据数组,但具有一个额外的属性。我知道如何添加属性并使用瀑布模型将它们传递给回调,因为我使用多个回调函数和for循环我无法得到预期的结果。

代码:

var fetchRevenue = function(restaurantArray, type, startDate, endDate, fn) {
_.forEach(restaurantArray, function(rest) {
    fetchDateWiseReport(new Date('07/10/2015'), new Date('07/16/2015'), rest._id, type, function(orders) {
          var newOrders = [];
      async.waterfall([
        function(callback) {
          if(orders && orders.length > 0){
            async.forEach(orders, function(order) {
              getSellingPriceOfItems(order.orders, function(sp) {
              order.sp = sp;
              newOrders.push(order);
              if (newOrders.length === orders.length)
                callback(null, newOrders);
            });
              }); 
             } else {
            newOrders.push([]);
          }        
        },
        function(newOrders, callback) {
            var restArr = []
          //get sum of all orders of each restaurant and add into restArr
          callback(null, restArr);

        },
        function(restArr, callback) {
          callback(null, newOrders);
        }
      ], function(err, result) {
        fn(result);
      });
    });
  });
};

我的职能:

  1. fetchDateWiseReport =获取给定日期的餐馆记录并在回调中发送结果
  2. getSellingPriceOfItems =查询项目模型查找每个项目的价格并返回给定数组的售价并在回调中发送结果。 我的完整代码包括所有函数here。 现在我想要的命令应该等于newOrders并附加attibute'sp'。但我无法得到这个。你能建议我继续吗?

1 个答案:

答案 0 :(得分:0)

使用Express方式处理回调问题

在你的路线

app.get('you/route',fetchDateWiseReport(), second(),finalReturningREsult())

你的第一个函数将在req.body.firstResult中执行第一个异步循环函数assiggn reult并传递给第二个函数。等等