我正在使用keystone.js,它使用express.js和jade,以及pdf-extract npm模块。
我正在尝试设置一个上传表单,该表单提取PDF并在keystone.js中的视图中呈现文本。
我无法在pdf-extract处理器完成事件上呈现视图。看起来我有递归。我有这条路线,upload.js
exports = module.exports = function(req, res) {
var view = new keystone.View(req, res),
locals = res.locals;
// Set locals
locals.section = 'upload';
locals.formData = req.body || {};
locals.validationErrors = {};
view.on('post', { action: 'upload' }, function(next) {
...
...file upload code
...
var processor = pdf_extract(absolute_path_to_pdf, options, function(err) {
if (err) {
res.end(util.inspect(err));
}
});
processor.on('complete', function(data) {
view.render('upload', {jadeVar:data.text_pages});
next();
}); //on processor.complete
}); //on view.post
view.render('upload'); //render on no post
这会从pdf-extract中输出大约24个关于上传文件的错误,这些错误是以递归的方式找不到的。
如果我这样做:
processor.on('complete', function(data) {
res.end(util.inspect(data.text_pages));
});
我在没有“上传”视图的情况下将我想要的提取的pdf文本直接发送到浏览器。我正在尝试获取该输出并将其发送到“上传”视图。
答案 0 :(得分:1)
我在完成事件上更改了处理器以使用res.render而不是view.render
processor.on('complete', function(data) {
res.render('upload', {jadeVar:data.text_pages});
next();
}); //on processor.complete
我想这是变量范围的一个问题,并且未定义视图?
我通过查看keystone / lib / view.js
找到了这个