我对Express / Node.js / Mongoose有点新,我遇到了回调地狱。我尝试做的是获取对此API网址/page/module/add/:id
的请求,如果成功调用buildMod(data)
,则该函数调用getMod(data)
,然后该函数调用{{} 1}}并最终我希望将writeMod(data)
值传递回我的true
。
一旦得到回复,我想退回。我在网上搜索过,并没有太多相似的情况 - 我个人认为我的情况太深了......
router
我知道回调函数的声明是错误的,但我一直在尝试,而我似乎无法超越这个阶段。我确信这绝对是可能的,非常感谢任何帮助!
答案 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);
});
}