Express不会将对象传递给视图

我试图发送一个用户对象从护照到浏览器,但我得到的是在控制台中的window.user undefined

在路线中,我用console.log("USER:"+JSON.stringify(req.user, null, 4))检查了对象

我得到正确的输出:

 USER :{ "emails": [ {} ], "nick": "nickname", "identifier": "76561197990749921", "points": 140 } 

尝试使用res.render('index', {user: req.user});发送它时res.render('index', {user: req.user}); 我不能从窗口对象检索它。 但是当我发送一些属性,例如res.render('index', {user: req.user.points}); 它被附加到window.user作为它应该…另一方面,而试图发送req.user.nick它也不附加到window 。 可能是什么问题?

渲染不保留对象。 您传递.render函数的对象被用作模板的stringmacros,因此如果您的索引模板中包含{{ user }}<% user %> (语法取决于您select的模板引擎),则它会将user内容强制的string写入您的文件。

指数:

 <p>{{ user }}</p> 

呼叫:

 res.render('index', {user: {"name": "monkey"}}); 

结果:

 <p>{"name": "monkey"}</p> 

这是文本,而不是一个JavaScript对象。 当然,我们可以确保string进入脚本块:

指数:

 <script> var user = {{ user }}; </script> 

呼叫:

 res.render('index', {user: {"name": "monkey"}}); 

结果:

 <script> var user = {"name": "monkey"}; </script> 

现在,我们可以突然在我们的页面JavaScript的其余部分使用它。