如何在 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) {
// ...
}
我想通过从我的数据库中获取用户名来打印当前登录的用户。
在我的模型中,用户名 属性 包含以下架构:
{
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) {
// ...
}