Express Sequelize返回true或false

时间:2017-12-29 16:51:24

标签: node.js express sequelize.js

我正在尝试检查用户访问级别,以便在服务中授予他一些操作。

exports.hasAdminAccess = function(req, res, next) {
  if (hasAccessLevel(req.user, adminLevel)) {
    return next()
  }
  res.redirect('/accessProblem');
}

function hasAccessLevel(user, level) {
  UserRole = models.UserRole;
  return UserRole.findOne({
    where: {
      id: user.userRoleId,
    }
  }).then(function(role){
    if (role.accessLevel <= level) {
      return true;
    } else {
      return false;
    }
  });
}

hasAccessLevel()不断返回Promise对象truefalse

我可以在hasAccessLevel中编写hasAdminAccessLevel的正文,但我还有很多其他方法可用于其他角色。

还有其他方法可以执行此操作吗?

1 个答案:

答案 0 :(得分:1)

您可以通过以下hasAdminAccess方法解决承诺:

exports.hasAdminAccess = function(req,res,next) {
  hasAccessLevel(req.user,adminLevel)
    .then((value) => {
       if (value) {
          return next();
       }
    })
    .catch(() => res.redirect('/accessProblem'));
}

function hasAccessLevel(user, level) {
  UserRole = models.UserRole;
  return UserRole.findOne({
    where: {
      id: user.userRoleId,
    }
  }).then(function(role){
    if (role.accessLevel <= level) {
      return true;
    } else {
      return false;
    }
  });
}