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

Mic*_*aum 5 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});
Run Code Online (Sandbox Code Playgroud)

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

如果我做:

    <div id='Subject'>#{eventData.Subject}</div>
Run Code Online (Sandbox Code Playgroud)

我得到#{eventData.Subject}的打印输出

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

    <script type="text/javascript">
    var mydata = #{eventData};
    </script>
Run Code Online (Sandbox Code Playgroud)

经过一番搜索后,我找到了一篇建议先将其字符串化的帖子:

    var mydata = !{JSON.stringify(eventData)};
    console.log(mydata);
Run Code Online (Sandbox Code Playgroud)

在这里,我得到一个语法错误"SyntaxError:missing:after property id"

我很确定我错过了一些基本的东西,并且不能为我的生活弄清楚.我发现很多文章的例子都解释了如何在Jade中做到这一点,但我不想使用Jade并使用文章中的建议导致"未定义"或"非法字符"错误.

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

Mic*_*aum 4

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

我改用 ejs:

     // view engine ejs
     app.set('view engine', 'ejs');
     app.register('.html', require('ejs'));
Run Code Online (Sandbox Code Playgroud)

并使用以下占位符:

    <%= eventData.Subject %>
Run Code Online (Sandbox Code Playgroud)

这实际上让我的数据出现了。感谢所有的评论和回答!迈克尔