显示基于用户角色的记录

时间:2015-06-08 15:56:58

标签: angularjs node.js express mongoose

我有一个具有“user,admin”等角色的应用。在控制器中,我检查用户是否是管理员“req.user.roles.indexOf('admin')> -1”以显示所有记录,否则仅显示用户记录。我想知道是否有更好的方法可以做到这一点,或者这是否可行。感谢

    /**
 * List of Articles
 */
exports.list = function (req, res) {
  if (req.user.roles.indexOf('admin') > -1) {
    Article.find().sort('-created').populate('user', 'displayName').exec(function (err, articles) {
      if (err) {
        return res.status(400).send({
          message: errorHandler.getErrorMessage(err)
        });
      } else {
        res.json(articles);
      }
    });
  }else {
    Article.find({user:req.user._id}).sort('-created').populate('user', 'displayName').exec(function (err, articles) {
      if (err) {
        return res.status(400).send({
          message: errorHandler.getErrorMessage(err)
        });
      } else {
        res.json(articles);
      }
    });
  }
};

1 个答案:

答案 0 :(得分:1)

您还可以在另一个方法(可能在不同的模块 - userController中)重构数据库访问位,这将使您的代码更具可读性。这并不符合答案,但将所有这些都置于评论中并不合适。

exports.list = function (req, res) {
  if (hasRole('admin')) {
    userController.getAllRecords(req, res);
  } else {
    userController.getRecordsById(req, res)
  }
};