我有一个具有“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);
}
});
}
};
答案 0 :(得分:1)
您还可以在另一个方法(可能在不同的模块 - userController中)重构数据库访问位,这将使您的代码更具可读性。这并不符合答案,但将所有这些都置于评论中并不合适。
exports.list = function (req, res) {
if (hasRole('admin')) {
userController.getAllRecords(req, res);
} else {
userController.getRecordsById(req, res)
}
};