【发布时间】:2015-06-09 00:21:11
【问题描述】:
我有一个具有角色的应用程序,例如“用户、管理员”。在控制器中,我检查用户是否为管理员“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);
}
});
}
};
【问题讨论】:
-
我会将 req.user.roles.indexOf('admin') > -1 重构为类似 hasRole(role) 的方法,使其更通用。
-
感谢 Abhishek 说得通。除此之外没有办法绕过if else?我还想稍微缩短我的代码:)
-
在下面查看我的答案。- 不符合作为答案的条件,但将所有这些都放在评论中看起来不太好。
标签: angularjs node.js express mongoose