Javascript 检查配置文件是管理员还是用户,并相应显示
我试图根据用户登录的角色显示信息。如果用户是管理员,则显示数据库中的所有数据,如果其他用户仅显示其详细信息 我在身份验证登录后尝试了/profile路由Javascript 检查配置文件是管理员还是用户,并相应显示,javascript,node.js,routes,Javascript,Node.js,Routes,我试图根据用户登录的角色显示信息。如果用户是管理员,则显示数据库中的所有数据,如果其他用户仅显示其详细信息 我在身份验证登录后尝试了/profile路由 //get user details of login profile router.get('/profile', checkAuth, (req, res, data) =>{ User.find(req.userData, function(err, users) { if (req.role === "
//get user details of login profile
router.get('/profile', checkAuth, (req, res, data) =>{
User.find(req.userData, function(err, users) {
if (req.role === "admin") {
return res.json(users);
}else{
res.send(req.userData);
}
});
});
if
条件在此不起作用if(req.role==“admin”)
仅res.send(请求用户数据)代码>正在这里工作
我已经在/login
const adminEmail = "xyz@xyz.com";
const role = user[0].email===adminEmail? "admin" : "user";
const token = jwt.sign(
{
email: user[0].email,
userId: user[0]._id,
phoneNo: user[0].phoneNumber,
role
}
作为回应,我得到了
{
"email": "xyz@xyz.com",
"userId": "5c2dee17ea4264a40156f0",
"phoneNo": "8xxx25",
"role": "admin",
"iat": 1547111673,
"exp": 1547115273
}
你为什么要做一个用户[0]
它应该是user[“email”]
或user.email
直接发送
给您的响应一个对象而不是一个对象数组。您为什么要做一个用户[0]
它应该是user[“email”]
或user.email
直接发送
给您的响应一个对象而不是一个对象数组。您尝试在req
中检查角色,但它是未定义的。首先,您必须检查用户是否已登录。然后,若用户是管理员,那个么从数据库中获取一些数据。否则,发送用户的对象
router.get('/profile', checkAuth, (req, res, data) =>{
// if req.userData is user object
if(req.userData.role === 'admin') {
User
.find()
.then(users => res.json(users))
.catch(error => res.json({error}))
} else {
res.json(req.userData);
}
});
您试图检查req
中的角色,但它是未定义的
。首先,您必须检查用户是否已登录。然后,若用户是管理员,那个么从数据库中获取一些数据。否则,发送用户的对象
router.get('/profile', checkAuth, (req, res, data) =>{
// if req.userData is user object
if(req.userData.role === 'admin') {
User
.find()
.then(users => res.json(users))
.catch(error => res.json({error}))
} else {
res.json(req.userData);
}
});
我就是这样解决的
router.get('/profile', checkAuth, (req, res) =>{
if (req.userData.role === "admin") {
User.find({}, function(err, users) {
res.json(users);
});
}else{
res.send(req.userData);
}
});
我就是这样解决的
router.get('/profile', checkAuth, (req, res) =>{
if (req.userData.role === "admin") {
User.find({}, function(err, users) {
res.json(users);
});
}else{
res.send(req.userData);
}
});
角色位于req object?或req.userData.role?@BittuS中,它位于userData
中。我尝试了这个方法,但是如果userData是空的,那么如何在res.send(req.userData)响应中获取userData?代码缺失think@BittuSuserData不是空的。我正在通过userData解码我的请求。我现在已经纠正了这个问题。router.get('/profile',checkAuth,(req,res)=>{if(req.userData.role==“admin”){User.find({},function(err,users){res.json(users);};}else{res send(req.userData);})代码>角色在req对象?或req.userData.role?@BittuS中,它在userData
中。我尝试了这个方法,但是如果userData是空的,那么如何在res.send(req.userData)响应中获取userData?代码缺失think@BittuSuserData不是空的。我正在通过userData解码我的请求。我现在已经纠正了这个问题。router.get('/profile',checkAuth,(req,res)=>{if(req.userData.role==“admin”){User.find({},function(err,users){res.json(users);};}else{res send(req.userData);})代码>谢谢你的回答。谢谢你的回答。这是给当前用户的。无论哪种方式,它都只在单个对象中工作。如果我以这种方式提到user.email,我将不会收到回复中的电子邮件和其他详细信息。感谢您更新评论和澄清。我之前被搞糊涂了。这是给当前用户的。无论哪种方式,它都只在单个对象中工作。如果我以这种方式提到user.email,我将不会收到回复中的电子邮件和其他详细信息。感谢您更新评论和澄清。我之前很困惑。