使用ejsembedded用户对象

我目前正在使用护照模块在Node.js中实现Web应用程序的身份validation。 在渲染索引页时,我将用户对象返回给用户

app.route('/').get(function(req, res) { res.render('index', { isAuthenticated: req.isAuthenticated(), user: req.user //User Object provided by passport }); }); 

我试图用ejs将用户对象embedded到DOM中:

 <!--Embedding The User Object--> <script type="text/javascript"> var user = <%= user%>; </script> 

但是有一些编码问题。 这是我在浏览器中查看源代码的输出:

 <!--Embedding The User Object--> <script type="text/javascript"> var user = { email: 'test@gmail.com', roles: [ 'user' ], created: Thu Feb 04 2016 19:13:16 GMT+1100 (AEDT), __v: 0, _id: 56b3081cb406f8156cd3798a }; </script> 

我正在使用swig来处理编码的例子,如下所示:

 <!--Embedding The User Object--> <script type="text/javascript"> var user = {{ user | json | safe }}; </script> 

我不太熟悉swig,所以我认为这是某种stream水线。 我想知道如何使用ejs做这个?

在Swig中, {{ user | json | safe }} {{ user | json | safe }} {{ user | json | safe }}意思是:

返回此JavaScript对象userstring表示forms,并返回此string,强制它不被自动转义。

在翡翠,

!{JSON.stringify(user)}转义

#{JSON.stringify(user)}逃脱

在Ejs,

<%- JSON.stringify(user) %>转义

<%= JSON.stringify(user) %>转义

解决! EJS有一个html转义函数,就像

 <%- user %> 

代替

 <%= user %>