我正在尝试创建我在本地工作的节点应用的webtask功能。 Webtask提供了一个模板,它有一个上下文(ctx)和一个回调(cb)作为两个参数:
module.exports = function(ctx, cb) {
cb(null, { hello: ctx.data.name || 'Anonymous' });
};
我有半工作代码,如下所示:
const PDFParser = require('pdf2json@1.1.7')
const request = require('request')
module.exports = function(ctx, cb) {
const pdfParser = new PDFParser();
const pdfUrl = ctx.body.data.url;
const pdfPipe = request({url: pdfUrl, encoding:null}).pipe(pdfParser);
const data = []; //define empty array for response data
pdfPipe.on("pdfParser_dataError", err => console.error(err) );
pdfPipe.on("pdfParser_dataReady", pdf => {
data.push(pdfParser.getAllFieldsTypes()); //push data into array
console.log("data", data); //log the result
});
cb(null, data );
};
我需要将更新的“数据”发送到回调函数,但无法弄清楚如何。我目前正在返回一个空数组(最初的const data = []
),但我的console.log("data", data)
会返回所需的结果。
答案 0 :(得分:2)
为了修复你的代码,你需要做的是在调用on(发射器)时调用回调:
const request = require('request')
module.exports = function(ctx, cb) {
const pdfParser = new PDFParser();
const pdfUrl = ctx.body.data.url;
const pdfPipe = request({url: pdfUrl, encoding:null}).pipe(pdfParser);
const data = []; //define empty array for response data
pdfPipe.on("pdfParser_dataError", err => console.error(err) );
pdfPipe.on("pdfParser_dataReady", pdf => {
data.push(pdfParser.getAllFieldsTypes()); //push data into array
console.log("data", data); //log the result
cb(null, data );
});
};