【问题标题】:How can i print only current user in HBS template如何在 HBS 模板中仅打印当前用户
【发布时间】:2020-03-09 14:10:15
【问题描述】:

我想通过从我的数据库中获取用户名来打印当前登录的用户。

在我的模型中,用户名属性包含以下架构:

{
  type: String, 
  required: true
}

index.js:

const users = require('../model/db');
router.get('/profiles/instructor', function (req, res, next) {
  users.find({}, 'username', (err, doc)=>{

    if(err){
      console.log('err while finding on instructor at index.js => ' + err)
    }else{
      console.log(doc)
      res.render('./profiles/instructor', { 
        title: 'Courstak | Instructor Profile',
        name: doc
// etc......
})

ex.hbs:

<h5>{{name}}</h5>

我遇到的问题是,当我打开我的网站时,它会显示数据库中的所有用户,而不仅仅是当前登录的用户:

错误截图:

【问题讨论】:

  • 对于这么多缺失的信息很难提供帮助。用户如何登录?你在哪里存储会话信息?如果没有某种登录机制/会话信息,您的应用程序应该如何知道它需要显示哪个用户?简短的回答是;显示所有用户是因为您正在查询所有用户而不是以任何方式过滤。 users.find({}, 'username', (err, doc)=&gt;{ 运行以下查询返回每个文档,只有用户名字段:users.find({}, 'username',,这会将所有数据传递到您的模板:name: doc 这就是显示每个用户的原因。
  • 使用护照本地策略创建的登录
  • 我假会话

标签: node.js express mongoose handlebars.js passport.js


【解决方案1】:

您在 OP 的 cmets 中提到您正在使用 passport-local 策略,并且看起来它以您期望的方式很好地与 express 连接,所以 req.user 应该有您正在寻找的信息,这将使您的代码像(assuming you're following the documentation to properly use passport-local)

router.get('/profiles/instructor', function (req, res, next) {
    res.render('./profiles/instructor', { 
        title: 'Courstak | Instructor Profile',
        name: req.user.username
    });
});

我还建议使用一些中间件,例如connect-ensure-login,以确保用户已登录并具有有效会话。您可以像这样添加上面的中间件:

var connectEnsureLogin = require('connect-ensure-login')

router.get('/profiles/instructor',connectEnsureLogin.ensureLoggedIn(), function (req, res, next) {
    // ...
}

【讨论】:

  • 我尝试添加 req.user,但它不适用于任何其他操作,例如 '/',它仅适用于护照在其中验证的 '/login' 操作
  • 听起来你可能没有正确使用 passport.js - 你有没有 looked at an example such as this one 并用你的代码交叉引用了这个?您很可能错过了app.use(passport.session()) 电话,但我不知道查看您提供的代码。
  • 非常感谢,这个链接对我有帮助 谢谢我花了超过 10 个小时来误解为什么代码不起作用!!
  • 如果此答案对您有所帮助,那么您可以考虑将此答案标记为已接受 - 请参阅 Ask questions, get answers, no distractions
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-02
  • 2013-01-26
相关资源
最近更新 更多