使用Express.js的res.send()和async.each

时间:2016-12-09 08:19:46

标签: express asynchronous async.js

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,我正在使用

  已发送

标头

错误。

如何在发出请求时将每次迭代的结果作为数组传递?

1 个答案:

答案 0 :(得分:1)

由于你已经在这里使用了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);
  });
});