gpt4 book ai didi

javascript - Mongoose.js : Find users, 然后检查用户的值

转载 作者:行者123 更新时间:2023-12-03 01:32:48 24 4
gpt4 key购买 nike

我正在尝试检查用户是否是管理员,但无法检索该值。当我记录 console.log(user) 时,我得到所有这些值:

email: 'testone@hotmail.com',
password:'$2b$10$mMyZkF3y8wxFTXUNgd/giuDvbaXfTFxlYECQmHgvAHDd4NB5CNpsq',
role: 'admin'

现在如何检查用户 Angular 色是否 === 为“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() 为您提供了一个文档数组,而不是文档的对象。

尝试user[0].role

!req.userData.role === 'admin' 也是一个问题。
它应该是 req.userData.role !== 'admin'!(req.userData.role === 'admin')

此外,您的应用似乎已经从数据库加载用户并将其附加到 reqpassport.js 或其他东西必须执行此操作。如果是这种情况,您实际上不需要再次执行 User.find() ,因为它已经由您的身份验证机制完成了。这仅与请求者有关,如果您正在加载其他用户进行其他操作,请忽略此咆哮。

此外,如果您只想要一条与查询匹配的记录,请尝试使用 findOne 而不是 find

关于javascript - Mongoose.js : Find users, 然后检查用户的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51206786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com