快速路由器回调

时间:2016-07-06 01:52:38

标签: javascript node.js

我对Express / Node.js / Mongoose有点新,我遇到了回调地狱。我尝试做的是获取对此API网址/page/module/add/:id的请求,如果成功调用buildMod(data),则该函数调用getMod(data),然后该函数调用{{} 1}}并最终我希望将writeMod(data)值传递回我的true

一旦得到回复,我想退回。我在网上搜索过,并没有太多相似的情况 - 我个人认为我的情况太深了......

router

我知道回调函数的声明是错误的,但我一直在尝试,而我似乎无法超越这个阶段。我确信这绝对是可能的,非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

fs.appendFile是异步的,您无法从asynchronous来电返回。

利用callback



router.get('/page/module/add/:id', function(req, res) {
  Client.find({
    "emailAddress": emailAddress,
    "sequence.slug": pageSlug
  }, {
    "emailAddress": 1,
    "sequence.$": 1
  }, function(err, data) {
    if (!err) {
      res.statusCode = 200;
      buildMod(data, function(data) {
        res.json(data);
      });
    } else {
      res.statusCode = 500;
      log.error('Internal error(%d): %s', res.statusCode, err.message);
      return res.json({
        error: 'Server error'
      });
    }
  }).select('sequence emailAddress domain');
});


function buildMod(data, cb) {
  getMod(data, cb);
}

function getMod(data, cb) {
  writeMod(data, cb);
}

function writeMod(data, cb) {
  fs.appendFile(location, content, function(err) {
    if (err) throw err;
    cb(true);
  });
}