javascript - Express 不会将对象传递给 View

标签 javascript node.js express pug

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

最佳答案

渲染不保留对象。您传递的对象 .render函数被用作模板的字符串宏,所以如果你的索引模板有一个 {{ user }}<% user %>在其中(语法取决于您选择的模板引擎),然后它将写入您的 user字符串内容强制进入您的文件。

索引:

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

调用:

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

结果:

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

那是文本,不是 JavaScript 对象。当然我们可以确保字符串进入脚本 block :

索引:

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

调用:

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

结果:

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

现在我们可以突然在页面上的其他 JavaScript 中使用它。

关于javascript - Express 不会将对象传递给 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18903357/

相关文章:

javascript - 无法在 Js 日期库中增加日期

javascript - 添加 schema.org 视频标记以使用 Javascript 嵌入

node.js - JEST with Express 未完成

node.js - 使用 react-devtools 破解身份验证

javascript - 无法永远卸载nodejs

javascript - 使用 JQM,为什么子 div 不覆盖 parent 的宽度和高度

javascript - .css 函数意外的 token 非法 jquery

node.js - fs.unlink 不会删除文件

node.js - 如何使用最新的 Express.js 进行应用程序路由?

javascript - 类型 '' 上不存在属性 'Request<ParamsDictionary>'