大佬教程收集整理的这篇文章主要介绍了node.js – 在Firebase云功能上使用带有PDFMake的promise,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所有这些都是使用Promises完成的.一切正常,直到实际生成PDF.
这是我的主要事件监听器中的代码:
exports.handler = (admin,event,storagE) => { const quotationData = event.data.val(); // We must return a Promise when performing async tasks inside Functions // Eg: WriTing to realtime db const CompanyId = event.params.CompanyId; setTings.getCompanyProfile(admin,CompanyId) .then((profilE) => { return quotPdfHelper.generatePDF(fonts,profile,quotationData,storagE); }) .then(() => { console.log('Generation successful. Pass for email'); }) .catch((err) => { console.log(`Error: ${err}`); }); };
exports.generatePDF = (fonts,companyInfo,storagE) => { const printer = new PdfPrinter(fonts); const docDeFinition = { content: [ { text: [ { text: `${CompanyInfo.titlE}\n`,style: 'companyHeader',},`${CompanyInfo.addr_line1},${CompanyInfo.addr_line2}\n`,`${CompanyInfo.city} (${CompanyInfo.statE}) - INDIA\n`,`Email: ${CompanyInfo.email} • Web: ${CompanyInfo.websitE}\n`,`Phone: ${CompanyInfo.phonE}\n`,`GSTin: ${CompanyInfo.gst_registration_number} • PAN: AARFK6552G\n`,],style: 'body',//absolutePosition: {x: 20,y: 45} },styles: { companyHeader: { fontSize: 18,bold: true,body: { fontSize: 10,pageMargins: 20,}; return new Promise((resolve,reject) => { // const bucket = storage.bucket(`${PROjeCT_ID}.appspot.com`); // const fil@R_801_8371@ = `${Date.Now()}-quotation.pdf`; // const file = bucket.file(fileName); // const stream = file.createWriteStream({ resumable: false }); const pdfDoc = printer.createPdfKitDocument(docDeFinition); // pdfDoc.pipe(stream); const chunks = []; let result = null; pdfDoc.on('data',(chunk) => { chunks.push(chunk); }); pdfDoc.on('error',(err) => { reject(err); }); pdfDoc.on('end',() => { result = Buffer.concat(chunks); resolve(result); }); pdfDoc.end(); }); };
这里有什么可能是错误的,这会阻止承诺,从而使报价代码按预期执行?
在firebase日志中,我看到的是函数执行耗时3288毫秒,完成状态:’ok’
.then((profilE) => { return quotPdfHelper.generatePDF(fonts,storagE); }) .then(() => { console.log('Generation successful. Pass for email'); })
在上面的代码中,您将结果传递给下一个块,但随后从该块返回undefined.这个Promise链的最终结果将是未定义的.要通过结果,您需要在Promise链的末尾返回它:
.then((profilE) => { return quotPdfHelper.generatePDF(fonts,storagE); }) .then(buffer => { console.log('Generation successful. Pass for email'); return buffer; })
以上是大佬教程为你收集整理的node.js – 在Firebase云功能上使用带有PDFMake的promise全部内容,希望文章能够帮你解决node.js – 在Firebase云功能上使用带有PDFMake的promise所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。