【发布时间】:2018-11-23 16:51:20
【问题描述】:
假设我想在执行任务之前检查登录用户是否具有管理权限。如果我必须等待 mongoose 函数检查数据库以了解用户是否有权限,我该如何异步实现?
假设我有一个这样的用户模型:
const UserSchema = new Schema({
username: {
type: String,
required: true
},
password: {
type: String,
required: true
},
isadmin: {
type: Boolean,
default: false
}
});
然后我创建一个函数来检查用户是否是管理员
function isAdmin(id) {
let is = false;
User.findById(id)
.then(user => {
if (user) {
if (user.isAdmin) {
is = true;
}
}
})
.catch(err => console.log(err));
//Now I want to wait for the findById function to resolve before returning this function
return is;
};
然后假设我想在执行诸如从帖子中删除评论之类的操作之前检查用户是否是管理员
router.delete("/post/comment/:id"),
(req, res) => {
if (!isAdmin(req.user.id)) {
return res.status(401).json({ notauthorized: "User is not admin" });
}
//Go ahead and remove content
}
);
【问题讨论】:
标签: javascript node.js express asynchronous mongoose