在node.js中将数组传递给jade模板时遇到问题

 SaraCody_174 发布于 2023-02-13 18:18

我试图传递一系列新闻在屏幕上显示但我在某种程度上在浏览器的结果中得到空数组

路线/ rss.js

...
var news = [];
...
          var this_news = { 
            'title': item.title,
            'description': item.description
          }   
          news.push(this_news);
...
  res.render('rss', { 
    title: 'Node.js based RSS reader',
    newsi: JSON.stringify(news)
  }); 

意见/ rss.jade

extends layout

block content
  h1= title
  p Welcome to #{title}
  p Sure why not 
  script(type='text/javascript').
    var inews = !{newsi};

编辑

好的,我得出结论,问题在于我的'非回调逻辑'

这是我的代码:

var FeedParser = require(__dirname + '/../node_modules/feedparser')
  , request = require(__dirname + '/../node_modules/request');

exports.news = function(req, res){

  var news = []; 
    request('http://feeds.feedburner.com/niebezpiecznik/')
    .pipe(new FeedParser())
      .on('error', function(error) {
        //...
      })  
      .on('meta', function (meta) {
        console.log('===== %s =====', meta.title);
        console.log('**** %s ****', meta.description);
        console.log();
      })  
      .on('readable', function() {
        var stream = this, item;
        while (item = stream.read()) {

          var this_news = { 
            'title': item.title,
            'description': item.description
          }   
          news.push(this_news);

        }   
        res.render('rss', { 
          title: 'Node.js based RSS reader',
          newsi: JSON.stringify(news)
        }); 
    }); 

};

它几乎可以工作,但它让我得到了未处理的异常.我该怎么处理?

1 个回答
  • 您可以将其作为数组传递,在渲染时不需要对其进行字符串化.然后在你的玉器一侧,如果你只是想要循环,你可以使用for和each.

    要将它作为对象传递给a script虽然你使用带单引号的感叹号,然后解析你的对象,这样你就可以使用它.如果您要将它作为对象传递给脚本但是不使用Jade的内置迭代,那么您需要在您的上面进行字符串化rss.js.

    路线/ rss.js

    ...
    var news = [];
    ...
              var this_news = { 
                'title': item.title,
                'description': item.description
              }   
              news.push(this_news);
    ...
      res.render('rss', { 
        title: 'Node.js based RSS reader',
        newsi: JSON.stringify(news)
      }); 
    

    意见/ rss.jade

    extends layout
    
    block content
      h1= title
      p Welcome to #{title}
      p Sure why not
      script(type='text/javascript').
        // Pass as regular array here
        var inews = JSON.parse('!{newsi}');
        console.log(inews);
    

    2023-02-13 18:22 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有