javascript - 使用 Express 在中间件中传递数据的最佳方式

标签 javascript node.js express middleware

我想让用户详细信息(例如:用户名)出现在我的导航栏中,为此我一直将“req.session.user”变量发送到我的 View 。

我一直在做的是,对于每个 View 渲染,我发送 req.session 变量,如下所示:

app.get('/index', function(req, res, next) {
    if(req.session.user) {
        res.render("index", {user:req.session.user});
    }
});

然后在导航栏所在的主干 View 中打印出用户名。

克服这种重复性成就的最佳实践是什么? 我已经搜索过,但没有结果。

谢谢。

最佳答案

如果您不想像这样向每个页面发送 req.session.user:{user:req.session.user} 您可以将此数据添加到res.locals对象:

app.use(function(req, res, next) {
    res.locals.user = req.session.user
    next()
})

因此,在每个页面上您可以像这样输出用户名(例如 ejs ):

<% if (user) { %>
    <h1>Hello, <%= user.name %></h1>
<% } %>

关于javascript - 使用 Express 在中间件中传递数据的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46626609/

相关文章:

javascript - Nodejs Mongoose 无法更新数据库中的值

javascript - 需要基于现有对象在 Javascript 中创建对象,考虑到其性能,这是有效的

javascript - 将页面导入到 App.js 时,它显示为空白

node.js - API 命名推荐 - findById findByName

node.js - MongooseJS FindById 对象 ID

node.js - 在 Express/ejs 中添加 View

javascript - 为什么调用 console.log 时开 Jest document.createElement ('div' ) 和其他元素为空?

ios - 我如何通知客户端以便某个帖子不再存在?

node.js - Electron 伪造: missing some dependencies

node.js - 如何在使用 yarn 安装 npm 依赖项时忽略不兼容的引擎 "node"错误?