Express Sequelize返回true或false

问题描述 投票:1回答:1

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

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

我可以在hasAccessLevelhasAdminAccessLevel的身体,但我还有很多其他角色的方法。

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

node.js express sequelize.js
1个回答
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;
    }
  });
}
© www.soinside.com 2019 - 2024. All rights reserved.