Express不会将对象传递给视图

时间:2013-09-19 19:32:05

标签: javascript node.js express pug

我试图将一个用户对象从护照发送到浏览器,但我得到的只是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 }}。可能是什么问题?

1 个答案:

答案 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中使用它。