Как я могу распечатать только текущий пользователь в шаблоне HBS - PullRequest
0 голосов
/ 07 марта 2020

Я хочу напечатать текущего пользователя, получившего имя пользователя из моей базы данных.

В моей модели свойство username содержит следующую схему:

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

Проблема, возникающая при открытии моего веб-сайта , он показывает всех пользователей в базе данных, а не только текущего зарегистрированного пользователя:

Снимок экрана ошибки:

enter image description here

1 Ответ

0 голосов
/ 08 марта 2020

Вы упомянули в комментариях своего ОП, что вы используете стратегию passport-local, и может показаться, что она очень хорошо соединяется с express так, как вы ожидаете, поэтому req.user должен иметь информация, которую вы ищете, которая сделает ваш код таким, как (при условии, что вы следуете документации, чтобы правильно использовать 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) {
    // ...
}
...