プロジェクトに 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);
});
});
});
};
私の機能:
- fetchDateWiseReport = 指定された日付のレストラン レコードを取得し、コールバックで結果を送信します
- getSellingPriceOfItems = 各アイテムの価格を検索し、指定された配列の販売価格を返し、コールバックで結果を送信するアイテム モデルへのクエリ。すべての機能を含む私の完全なコードはこちらです。ここで、追加の属性「sp」を使用して、注文を newOrders と等しくする必要があります。しかし、私はこれを得ることができません。続行するために何か提案してくれませんか?