Javascript js:找到用户,然后检查用户的值
我试图检查用户是否是管理员,但无法检索该值。当我记录console.log(user)时,我会得到所有这些值:Javascript js:找到用户,然后检查用户的值,javascript,node.js,express,mongoose,Javascript,Node.js,Express,Mongoose,我试图检查用户是否是管理员,但无法检索该值。当我记录console.log(user)时,我会得到所有这些值: email: 'testone@hotmail.com', password:'$2b$10$mMyZkF3y8wxFTXUNgd/giuDvbaXfTFxlYECQmHgvAHDd4NB5CNpsq', role: 'admin' 现在,如何检查用户角色是否为===to'admin'? 我试过做user.role,req.userData.role===“admin”,但我似乎找不
email: 'testone@hotmail.com',
password:'$2b$10$mMyZkF3y8wxFTXUNgd/giuDvbaXfTFxlYECQmHgvAHDd4NB5CNpsq',
role: 'admin'
现在,如何检查用户角色是否为===to'admin'?
我试过做user.role
,req.userData.role===“admin”
,但我似乎找不到它,因为它告诉我未定义
router.delete("/:id",
authCheck,
(req, res, next) => {
User.find()
.then(user => {
console.log('*this log gives me undefined*', user.role);
if (!req.userData.role === 'admin') {
Post.deleteOne({
_id: req.params.id,
poster: req.userData.userId,
}).then(result => {
if (result.n > 0) {
res.status(200).json({
message: "Deletion successful!"
});
} else {
res.status(401).json({
message: "Not authorised!"
});
}
})
}
})
});
我知道你们大多数人都会觉得这个超级简单,但我只是一个新的后端,所以我选择张贴这作为我最后的希望,在修复它,非常感谢 我认为User.find()
提供的是一个文档数组,而不是文档的对象
请尝试用户[0]。角色
!req.userData.role===“admin”
也是一个问题。
它应该是req.userData.role!='管理员“
或!(req.userData.role==“admin”)
此外,您的应用程序似乎已经从数据库加载用户并将其附加到req
passport.js
或者其他什么东西一定在这么做。如果是这种情况,您实际上不需要再次执行User.find()
,因为身份验证机制已经完成了这项工作。这与请求者有关,如果您正在加载其他用户的其他内容,请忽略此命令
另外,如果您只需要一条与查询匹配的记录,请尝试使用findOne
而不是find
是@Sashi提到的,当Iconsole.log(user)时代码>我得到了我想要的所有记录,但是我如何从中获取一些信息呢?我想检查用户的角色是否是管理员。@DavidJawHpan在那里也未定义,这就是为什么我问如何进行检查。很好,这很好,但我需要比较当前用户的角色。你知道我如何解决这个问题吗?我不确定我是否了解你的整个场景。是否要检查发出删除请求的用户的角色?是,如果角色为=to admin,则将允许该角色。目前,我的工作是,只有发表文章的人才能删除文章,如代码的post.deleteOne
部分所示,但现在我将其包装在一个if语句中,如本文所示。现在我只需要将发出请求的用户的Id与管理员的Id进行比较。!req.userData.role=='admin'
应该是req.userData.role!='admin'
如果您在req.userData
或req.user
中获取请求者的用户对象,请参见。很可能你已经明白了。然后您可以直接使用它,而不是加载用户User.find()
将为您提供所有用户的列表。