【问题标题】:Express Sequelize return true or falseExpress Sequelize 返回 true 或 false
【发布时间】:2017-12-29 16:51:24
【问题描述】:

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

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

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

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

【问题讨论】:

标签: node.js express sequelize.js


【解决方案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;
    }
  });
}

【讨论】:

    猜你喜欢
    • 2011-01-17
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    相关资源
    最近更新 更多