文件上传后的node.js keystoneJS渲染 View

标签 node.js express keystonejs

我正在使用 keystone.js,它使用express.js 和 jade,以及 pdf-extract npm 模块。

我正在尝试设置一个上传表单,用于提取 PDF 并在 keystone.js 的 View 中呈现文本。

我在渲染 pdf-extract 处理器完成事件的 View 时遇到问题。看起来我有递归。我有这条路线,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 中输出约两打错误,涉及未以递归方式找到上传的文件。

如果我这样做:

processor.on('complete', function(data) {
  res.end(util.inspect(data.text_pages));
});

我将提取的 pdf 文本直接发送到浏览器,而无需“上传” View 。我正在尝试获取该输出并将其发送到“上传” View 。

最佳答案

我更改了完整事件的处理器以使用 res.render 而不是 view.render

processor.on('complete', function(data) {
     res.render('upload', {jadeVar:data.text_pages});
     next();
   }); //on processor.complete

我猜这是变量范围和 View 未定义的问题?

我通过查看 keystone/lib/view.js 发现了这一点

关于文件上传后的node.js keystoneJS渲染 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22937913/

相关文章:

node.js - 使用 nodejs bunyan 正确记录错误?

javascript - Jade 引擎 : set value from variable inside attribute

angularjs - Node.js 从返回未定义的 MongoDB 获取请求

node.js - 在 sailsjs 中指定路线

javascript - http GET 从浏览器的 DOM 元素上返回完全不同的 HTML 元素和 innerHTML

javascript - Node/Express/mysql 如何在jade 页面中获取SQL 结果?

javascript - 基石JS : S3 image uploads being auto-renamed with temporary string

node.js - 由于 lodash@3.3.1 依赖问题,Keystonejs 安装失败

javascript - 有没有办法在 Keystone JS 上上传视频?

javascript - 在 javascript 中缓存闭包