如何在视图中将对象数组传递给jade显示?

时间:2016-07-24 21:08:58

标签: json node.js express twitter pug

我使用twitter节点模块使用api检索搜索并将它们放入存储在名为" tweets"的变量中的对象数组中。看起来像这样:

[ { created_at: 'Sun Jul 24 20:32:34 +0000 2016',
   text: '2 Timothy 1:7 #nofear #power #love #sound-mind',
   user: 
     { id: 90281227, 
       name: 'Anavella', 
       screen_name: 'anavellar' } }, 
 { created_at: 'Sun Jul 24 20:32:34 +0000 2016', 
   text: 'Look, then, that the light in you is not darkness.Lucas 11:35 #Love,
   user: 
     { id: 197893427,
       name: 'Sandra Melanny Rojas',
       screen_name: 'MelannySan' } } ]

当我在控制台上打印出来时。我使用以下代码行渲染视图:

res.render('index', { title: 'Express', data: JSON.stringify(tweets) });

在玉器模板上我有这样的东西:

block content
  h1= title
  p Welcome to #{title}
  -var jsonObj = !{JSON.parse(data)}
  if jsonObj
    ul
      each tweet, i in jsonObj
        li= tweet

但是我收到了意外的令牌错误。

基本上,我要做的是将我在index.js中创建的对象数组传递给index.jade视图,并能够遍历对象数组,以便我可以在视图中显示结果。

更新

我从JSON.parse(数据)中删除了!{},使其成为

-var jsonObj = JSON.parse(data)

最终消除了意外的令牌错误。在这种情况下,我仍然会收到一条错误,上面写着" JSON输入的意外结束"参考我刚编辑的那一行。

1 个答案:

答案 0 :(得分:0)

在将上下文数据传递给视图时,无需使用stringify:

res.render('index', { title: 'Express', data: tweets });

现在,在您的玉中,您可以简单地遍历数组并使用点符号或方括号表示法打印对象的属性,就像我们通常那样:

block content
  h1= title
  p Welcome to #{title}
  ul
    each tweet in data
        li= tweet.text