Ich bin ein wenig neu zu Express/Node.js/Mungo und ich bin in Callback-Hölle gelaufen. Was ich versuche zu tun, ist eine Anfrage in diese API-URL /page/module/add/:id
, wenn erfolgreich Anruf buildMod(data)
, dann ruft diese Funktion getMod(data)
, und dann ruft diese Funktion writeMod(data)
und schließlich möchte ich die true
Wert wieder rechts auf meine router
übergeben .Express-Router Callbacks
Sobald ich die Antwort habe, möchte ich es zurückgeben. Ich habe online recherchiert und es gibt nicht viele ähnlichen Situationen - ich persönlich denke, dass ich mich in tiefer zu haben ...
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;
});
}
Ich weiß, dass die Erklärungen für Rückrufe für die Funktionen falsch sind, aber ich habe schon versuchen und ich kann einfach nicht über diese Stufe zu kommen scheinen. Ich bin sicher, das ist definitiv möglich, jede Hilfe wird sehr geschätzt!
'fs.appendFile' ist async und Sie können nicht zurück von' async' ruft .. Nutzen Sie 'callback' – Rayon