将 Express.js 的 res.send() 与 async.each 一起使用
Using Express.js's res.send() with async.each
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 的 res.send() 功能,但考虑到我正在使用 async.each,我得到
headers already sent
错误。
如何在发出请求时将每次迭代的结果作为数组传递?
既然你已经在这里使用了 promises,我不鼓励你在这里使用 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);
});
});
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 的 res.send() 功能,但考虑到我正在使用 async.each,我得到
headers already sent
错误。
如何在发出请求时将每次迭代的结果作为数组传递?
既然你已经在这里使用了 promises,我不鼓励你在这里使用 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);
});
});