2017-09-06 22 views
1

pdfCreateに電話すると、インシデントがロードされ、正常に動作します。promisのNodejイベントが解決しない

次に、createIncidentReportが付属のサービスから呼び出されていますが、これはうまく動作します。

pdfStream.on('finish')は、PDFがディスクに書き込まれると呼び出されますが、これはコンソールで正常に動作します。ログは書き込まれますが、メールサービスは呼び出されません。約束をどのように解決すればよいですか?

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); 

    } 
+0

あなたは、PDFストリームのfinshイベントを取得するのですか? console.logは「pdfを書き終えました」と表示していますか? –

+0

はいコンソールログの終了を表示しています... – Nealv

答えて

2

私は答えを見つけました。

.then(() => mailservice.sendPdfCreatedMail(incident)); 

は、インシデントが予想されており、解決策が渡されなかったため、パラメータが不足しているために機能が解決しませんでした。このことによって、それを修正

resolve(incident); 

.then(incident => mailservice.sendPdfCreatedMail(incident)); 
関連する問題