Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查配置文件是管理员还是用户,并相应显示_Javascript_Node.js_Routes - Fatal编程技术网

Javascript 检查配置文件是管理员还是用户,并相应显示

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 === "

我试图根据用户登录的角色显示信息。如果用户是管理员,则显示数据库中的所有数据,如果其他用户仅显示其详细信息

我在身份验证登录后尝试了/profile路由

//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,我将不会收到回复中的电子邮件和其他详细信息。感谢您更新评论和澄清。我之前很困惑。