Wenn ich pdfCreate
aufrufen, wird ein Vorfall geladen, der gut funktioniert.Nodejs Ereignis in Promis nicht auflösen
Dann createIncidentReport
heißt von einem inbegriffenen Dienst, dies funktioniert gut.
pdfStream.on('finish')
wird aufgerufen, sobald die PDF auf die Festplatte geschrieben wird, funktioniert das auf der Konsole. Das Protokoll wird geschrieben, aber der Mailservice wird nicht aufgerufen. Wie soll ich das Versprechen lösen?
function pdfCreate(incidentId) {
Incident.findById(incidentId)
.then(incident => pdfService.createIncidentReport(incident))
.then(() => mailservice.sendPdfCreatedMail(incident));
}
function createIncidentReport(incident, res) {
return new Promise((resolve, reject) => {
let pdfStream = fs.createWriteStream(settings.PDF.DIRECTORY + incident.id + '.pdf');
incidentReport.pipe(pdfStream);
pdfStream.on('finish', function() {
console.log('finished writing pdf')
resolve();
});
}
}
function sendPdfCreatedMail(incident) {
console.log('mail');
let message = {
to: incident.reporter.email,
subject: 'Incident completed',
text: 'Incident has been completed.',
html: 'Incident has been completed.'
};
sendMessage(message);
}
Sie die finsh Veranstaltung von pdf-Stream erhalten Sie? Das console.log 'zeigt fertige PDF-Datei an? –
Ja, es zeigt die Konsolenprotokollierung ... – Nealv