Node.js 登录Nodejs应用程序后显示用户名有困难

Node.js 登录Nodejs应用程序后显示用户名有困难,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我正在制作一个Nodejs应用程序,能够成功地允许用户注册,将他们的信息存储在MongoDB数据库中,并允许他们登录。但是,我很难在用户登录后在每个页面上显示用户名。据我所知,我应该这样使用: res.render("./home/about", { name: req.user.name }); 但是,我必须让用户登录才能获取该名称,否则,它将出错。我想知道是否有一个解决办法,这样我就可以在每个页面上显示用户名? 这是指向我的git存储库的链接:

我正在制作一个Nodejs应用程序,能够成功地允许用户注册,将他们的信息存储在
MongoDB
数据库中,并允许他们登录。但是,我很难在用户登录后在每个页面上显示用户名。据我所知,我应该这样使用:

res.render("./home/about", {
        name: req.user.name
    });
但是,我必须让用户登录才能获取该名称,否则,它将出错。我想知道是否有一个解决办法,这样我就可以在每个页面上显示用户名? 这是指向我的git存储库的链接:

我将感谢任何帮助

注意我目前没有显示用户名的html代码,并且删除了上面显示的代码块

显示添加代码的图像:

显示我可以访问“关于”页上的用户名,但不能访问主页

已解决:


通过在my app.js文件中放置以下代码:

app.use(function(req, res, next){
    res.locals.user = req.user;
    next();
});
app.use(function(req, res, next){
    res.locals.user = req.user;
    next();
});
我能够访问附加到用户对象的所有数据。为了检查它是否有效,我将执行以下操作:

<% if(user){ %>
      <a>Welcome, <%= user.name %>!</a>
<% } %>
<% if(user){ %>
      <a>Welcome, <%= user.name %>!</a>
<% } %>

欢迎

注意,这些“”是允许我在HTML代码中使用javascript的“ejs”标记。

将以下代码放在我的app.js文件中:

app.use(function(req, res, next){
    res.locals.user = req.user;
    next();
});
app.use(function(req, res, next){
    res.locals.user = req.user;
    next();
});
我能够访问附加到用户对象的所有数据。为了检查它是否有效,我将执行以下操作:

<% if(user){ %>
      <a>Welcome, <%= user.name %>!</a>
<% } %>
<% if(user){ %>
      <a>Welcome, <%= user.name %>!</a>
<% } %>

欢迎

注意,这些“”是允许我在HTML代码中使用javascript的“ejs”标记。

但是我必须让用户登录才能获取该名称,否则,它会出错。
——那么您的意思是,用户名在登录时可以访问,但您不想在登录时访问它?我是说用户名在登录时可以访问,但是,我不能在所有页面上显示(即主页、关于页面等)。这是因为我通过将此代码放在呈现集页面的位置下来发送用户名(或在他们登录后可以访问用户名):res.render(“./home/about”,{name:req.user.name});但是,我不能将其放在我呈现的每个页面下,因为这会给我一个错误,因为除非用户登录,否则我无权访问req.user.name。因此,只有在用户登录时,才能访问该用户名。在我保护用户访问的页面上,除非用户登录,并且我使用此选项将用户名发送到{name:req.user.name}。因此,以我为例,我保护了about页面,并发送了名称以使其正常工作。很抱歉不够清晰。@HossamAlsheikh能否请您将您找到的解决方案作为答案发布在此处,以便帮助可能也有相同问题的未来读者。