2016-12-09 22 views
0
async1.each(arr, function(arrayMember) {  
    orders.where('name', arrayMember).fetch({withRelated: ['allOrders']}). 
    then(function(dd2, callback) { 
    dd2 = dd2.toJSON(); 
    var sendMemberOrder = {}; 
    sendMemberOrder.name = dd2.name; 
    sendMemberOrder.lastOrder = dd2.allOrders.length; 
    res.send(sendMemberOrder); 
    }); 
}, function(err) { 
    if (err) { 
    console.log("err"); 
    } 
}); 

で)(Express.jsのres.sendを使用して、私は私はエクスプレスのres.send()機能を使用しようとしているが、私はasync.eachを使用していることを考えるよasync.each

を取得しています

ヘッダがすでに

エラーを送りました。

要求が行われているときに、どのように各繰り返しの結果を配列として渡すことができますか?

+0

「res.send」部分を含むミドルウェア全体を表示してください。 –

+0

私は自分の質問を編集しました。私がこの方法で試してみると、エラーが出ます。 res.send()を介してすべてのものをブラウザに送信できるように、どうすれば非同期関数を手配できますか? – salep

+0

'sendMemberOrders'のJSON配列にしたいですか?ストリーミングソリューションが必要ですか、データが送信されるまでメモリに保持するだけで十分ですか? –

答えて

1

ここで約束しているので、ここではasync.jsの使用を中止したいと思います。あなたのコードは、コールバックをまったく呼び出さないため、とにかく壊れています。コールバックパラメータは間違った関数で宣言されています。代わりにこれを試すことができます:

app.get(your_route, function(req, res, next) { 
    // obtain arr 
    Promise.all(arr.map(function(arrayMember) { 
    return orders.where('name', arrayMember) 
    .fetch({withRelated: ['allOrders']}) 
    .then(function(dd2) { 
     dd2 = dd2.toJSON(); 
     return { 
     name: dd2.name, 
     lastOrder: dd2.allOrders.length 
     }; 
    }); 
    })).then(function(resultData) { 
    res.send(resultData); 
    }).catch(function(err) { 
    console.log(err); 
    next(err); 
    }); 
}); 
関連する問題