我试图将一个用户对象从护照发送到浏览器,但我得到的只是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.points});
时,它会附加到window.user
,因为它应该...另一方面,当尝试发送req.user.nick
时,它也没有附加到window
}}。可能是什么问题?
答案 0 :(得分:3)
渲染不会保留对象。您传递.render
函数的对象将被用作模板的字符串宏,因此如果您的索引模板中包含{{ user }}
或<% user %>
(语法取决于您选择的模板引擎) ),然后它会将您的user
内容强制插入的字符串写入您的文件。
指数:
<p>{{ user }}</p>
呼叫:
res.render('index', {user: {"name": "monkey"}});
结果:
<p>{"name": "monkey"}</p>
那是文本,而不是JavaScript对象。当然,我们可以确保字符串进入脚本块:
指数:
<script> var user = {{ user }}; </script>
呼叫:
res.render('index', {user: {"name": "monkey"}});
结果:
<script> var user = {"name": "monkey"}; </script>
现在我们可以突然在其余的页面JavaScript中使用它。