嗨有没有更好/更漂亮的方式来编写这个查询?
exports.list = function(req, res) {
if (req.user.roles.indexOf('admin') == 1) {
Timesheet.find()
.sort('-created').populate('user', 'displayName').exec(function (err, timesheets) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.jsonp(timesheets);
}
});
}
else {
Timesheet.find()
.where('user').equals(req.user.id)
.sort('-created').populate('user', 'displayName').exec(function (err, timesheets) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.jsonp(timesheets);
}
});
}
};
唯一不同的是,如果是admin,则添加.where(' user')。equals(req.user.id)
答案 0 :(得分:1)
要消除重复代码,您可以重构代码,根据用户是否处于管理员角色来改变查询的构建方式:
exports.list = function(req, res) {
var query = Timesheet.find();
if (req.user.roles.indexOf('admin') !== 1) {
query = query.where('user').equals(req.user.id);
}
query.sort('-created').populate('user', 'displayName').exec(function(err, timesheets) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.jsonp(timesheets);
}
});
}