将 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);
  });
});