나는 Express/Node.js/Mongoose에 약간 새로운데, 나는 콜백 지옥을 만났다. 내가 뭘 하려는지는이 API URL /page/module/add/:id
에 대한 요청을 받고, 성공한 경우 buildMod(data)
을 호출 한 다음 해당 함수는 getMod(data)
을 호출하고 그 함수는 writeMod(data)
을 호출하고 결국 true
값을 다시 router
으로 전달하려고합니다. .익스프레스 라우터 콜백
응답을 받으면 반환하고 싶습니다. 나는 온라인 검색 한 많은 비슷한 상황이 아니다 - 나는 개인적으로 너무 깊이에 자신을 가지고 생각 ...
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);
return 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) {
getMod(data);
}
function getMod(data) {
Module.find({ 'module_id': moduleNumID }, function (err, module) {
if(!module) {
return false;
}
if (!err) {
writeMod(data);
} else {
return false;
}
});
}
function writeMod(data) {
fs.appendFile(location, content, function(err) {
if (err) throw err;
return true;
});
}
내가 선언 콜백 기능에 대한 잘못 알고하지만 난 봤는데 노력하고 나는 단지이 단계를 지나갈 수 없다. 나는 이것이 확실히 가능하다는 것을 확신합니다, 어떤 도움이 정말로 감사합니다!
의
만들기 사용은'fs.appendFile' 비동기 그리고 당신은 .. async' 호출'에서 돌아 완벽 callback' – Rayon