【问题标题】:node.js keystoneJS render view after file upload文件上传后的node.js keystoneJS渲染视图
【发布时间】:2014-05-21 04:49:24
【问题描述】:

我正在使用 keystone.js,它使用 express.js 和 jam,以及 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 中输出大约两打关于未以递归方式找到的上传文件的错误。

如果我这样做:

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

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

【问题讨论】:

    标签: node.js express keystonejs


    【解决方案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 发现了这一点

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多