nodejs如何改变嵌套的写法,帮忙修改下面的代码..如果判断业务很多的话,代码都成歪的了..
发布于 10 年前 作者 songbo 5369 次浏览 最后一次编辑是 8 年前
babyModel.Baby.find({
}).count(function(err, cnt) { 
   if(cnt) {
        babyModel.Baby.find({
            }, {}, { 
            skip : start,
            limit : limit,
            sort : {
            'updateDate' : -1
           }
        }, function(err, results) {
            if(err) {
               log.logger.error('babyList find error:' + err);
            } else {
                res.send({
                  totalCount : cnt,
                   data : results
               });
            }
       });
   } else {
       res.send({
          totalCount : 0,
          data : ''
         });
   }
  });
4 回复

手动置顶

eventproxy来一发

var eventproxy = require('eventproxy');

var ep = eventproxy.create();
ep.fail(function (err) {
  log.logger.error(err);
});

babyModel.Baby.find({}),count(ep.doneLater('count'));
ep.on('count', function (cnt) {
  if (!ctn) {
    return ep.emit('results', []);
  }
  babyModel.Baby.find({}, {}, {
    skip : start,
    limit : limit,
    sort : {
      'updateDate' : -1
    }
  }, ep.done('results'));
});

ep.all('count', 'result', function (cnt, results) {
  res.send({
    totalCount: cnt,
    data: results
  });
});

可以用 when.js 或者promise

async的waterfall,或者把函数提取出来使用闭包在使用的时候生成,就可以消除金字塔了,node金字塔总是一不小心就搭得很高

回到顶部