【问题标题】:Rendering User ID ExpressJS渲染用户 ID ExpressJS
【发布时间】:2021-10-26 06:02:13
【问题描述】:

目前使用 mongoose 在仪表板上呈现管理员和用户信息,但我似乎无法呈现用户的 ID

这是我的代码

function ensureAuthenticated(req, res, next){
  if(req.isAuthenticated()){
    return next();
  } else {
    req.flash('error_msg', 'You are not logged in');
    res.redirect('/dashboard/login');
  }
}

/* GET Dashboard page. */
router.get('/dashboard', ensureAuthenticated, (req, res) => {
  User.find({}, function(err, users) {
    res.render('dashboard/index.hbs', {
      pageTitle: 'Dashboard',
      total: users.length,
      users: users
    });
  });
});
<a href="/dashboard/users/{{_id}}">My profile</a>

为来自 repo 的问题添加了一些代码。添加了 ensureAuthenticated 功能。从我可以看到的模型和一切设置正确,作为一个例子 total 正确呈现,所以它得到了 users

【问题讨论】:

  • 您的视图获得users - 您正在访问user。您的示例编码是缺少循环还是错误?
  • @JoelPeltonen 我要做的就是在用户登录仪表板时呈现用户详细信息,因此不需要循环,因为我正在尝试呈现一个用户信息
  • 当然 :) 但是,在您的控制器/路由中,您仍然设置了 `users:users` 并且在您的视图/模板中,您正在访问 user - 它们是两个不同的变量名
  • @JoelPeltonen 即使您将 users:users 设置为 user:user 也会得到相同的结果
  • 你能分享更多的代码吗?此外,我刚刚注意到您使用的是 .id,但 mongo ID 通常为 _id,因此也可以尝试使用下划线。如果您在控制器中执行user:user,则结果形式User.find() 将始终是一个数组,所以我实际上不建议您这样做。我的观点更多的是你思考变量数据类型的方向:)

标签: javascript express mongoose handlebars.js


【解决方案1】:

当您调试您拥有的 req 时,某些东西(我怀疑 Passport)直接在其中包含了一个用户变量,因此您可以将其输入到您的视图中。

/* GET Dashboard page. */
router.get('/dashboard', ensureAuthenticated, (req, res) => {
  User.find({}, function(err, users) {
    res.render('dashboard/index.hbs', {
      pageTitle: 'Dashboard',
      total: users.length,
      users: users,
      currentUser: req.user
    });
  });
});

在您看来,您可以使用它

<a href="/dashboard/users/{{currentUser._id}}">My profile</a>

【讨论】:

  • 谢谢你的作品,护照中一定发生了一些改变,影响了用户的渲染
猜你喜欢
  • 2012-04-05
  • 2015-01-30
  • 2011-11-07
  • 2020-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
相关资源
最近更新 更多