1

我在节点异步操作(来自 PHP 背景)方面遇到了非常困难的时间。我知道你可以嵌套回调,但这很快就会失控。

这是一个我想同步解决的基本示例(我知道对于这个示例异步解决可能很简单,但我需要知道如何同步解决更复杂的项目)。

这是一个快速应用程序,我正在尝试计算优惠券的使用次数:

var express = require('express');
var wrap = require('co-express');

app.post('/grab-valid-coupons', wrap(function* (req, res) {
  var validCoupons = [];

  console.log('grabbing coupons');

  var coupons = yield db.collection('Coupons').find({}).toArray();

  coupons.forEach(wrap(function* (coupon, index) {
    console.log(coupon.code, 'CODE');
    var couponUse = 0;
        couponUse += yield db.collection('Rentals').find({coupon: coupon.code}).count();
        couponUse += yield db.collection('Orders').find({coupon: coupon.code}).count();
    console.log(couponUse);
    if(couponUse < coupon.uses) {
      validCoupons.push(coupon);
    }
  }));
res.json(validCoupons);
}));

第一个产量有效,但我尝试计算所有内容的部分导致整个服务器挂起。有任何想法吗?

4

1 回答 1

1

res.send(validCoupons)您忘记在函数结束时发送数据或调用 next 。应该这样做

于 2017-04-29T02:50:28.690 回答