如何在 HBS 模板中仅打印当前用户

How can i print only current user in HBS template

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

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

{
  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>

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

错误截图:

您在 OP 的评论中提到您正在使用 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) {
    // ...
}