0

プロジェクトに MEAN (Mongo Express Angulars NodeJs) を使用しています。問題は、クエリ オブジェクトから受け取ったデータに 1 つの属性を追加する必要があることです。そして、まったく古いデータ配列で新しいデータ配列を作成しますが、追加の属性が1つあります。複数のコールバック関数と 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 = 各アイテムの価格を検索し、指定された配列の販売価格を返し、コールバックで結果を送信するアイテム モデルへのクエリ。すべての機能を含む私の完全なコードはこちらです。ここで、追加の属性「sp」を使用して、注文を newOrders と等しくする必要があります。しかし、私はこれを得ることができません。続行するために何か提案してくれませんか?
4

1 に答える 1