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

我想传递新闻的数组显示在屏幕上,但我不知何故是在浏览器中的结果中获得空数组

路线/ 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}; 

编辑

好吧,所以我得出结论,问题在于我的“非callback逻辑”

这是我的代码:

 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) }); }); }; 

它几乎可以工作,但它让我无法处理exception。 我应该如何处理?

你可以把它作为一个数组传递,你不需要在渲染的时候把它串起来。 那么在你的玉石方面,如果你只是想循环使用,你可以使用它们。

为了让它作为一个对象传递给一个script虽然你用一个单引号的感叹号,然后parsing你的对象,所以你可以使用它。 如果你打算把它作为一个对象传递给脚本,而不是使用Jade的内置迭代,那么你将需要在你的rss.js上进行string化。

路线/ 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);