1

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

4

1 回答 1

3

渲染不保留对象。您传递.render函数的对象将用作模板的字符串宏,因此如果您的索引模板中有一个{{ user }}or <% 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 的其余部分使用它。

于 2013-09-19T19:37:43.293 回答