将数据传递给node + express中的视图

时间:2013-03-12 07:39:07

标签: node.js express

我正在使用我的节点应用程序从API检索某些数据,并希望在视图中显示该数据并允许用户在那里进行更改。我正在调用api并得到一个JSON响应,我想传递给视图。这就是我正在做的事情:

    var query = 'SELECT Id, OwnerId, ActivityDateTime, EndDateTime, WhatId, WhoId, Subject FROM Event WHERE OwnerId = \'' + user.userId + '\''  ;
    // execute the query and get response
    ...
    ...
    var ev = resp.records;
    res.render('index.html', {eventData : ev});

问题是当我想在我的视图中使用数据时,我得到一个未定义的错误。

如果我这样做:

    <div id='Subject'>#{eventData.Subject}</div>

我打印出#{eventData.Subject}

尝试在JS中使用数据会返回一个未定义的错误:

    <script type="text/javascript">
    var mydata = #{eventData};
    </script>

经过一番搜索后,我发现了一篇建议首先对其进行字符串化的帖子:

    var mydata = !{JSON.stringify(eventData)};
    console.log(mydata);

在这里,我收到语法错误“SyntaxError:missing:after property id”

我很确定我错过了一些基本的东西而且不能为我的生活弄清楚。我发现了许多文章示例,解释了如何在Jade中进行,但我不想使用Jade并使用文章中的建议导致“未定义”或“非法字符”错误。

我完全没有想法......帮忙? TNX

1 个答案:

答案 0 :(得分:3)

Jonathan Ong的评论实际上让我走上正轨。由于我使用html的客户处理程序,它不会解释任何变量。

我转而使用ejs:

     // view engine ejs
     app.set('view engine', 'ejs');
     app.register('.html', require('ejs'));

并使用以下占位符:

    <%= eventData.Subject %>

这实际上使我的数据显示出来。感谢所有的评论和答案! 迈克尔