编写此查询的更漂亮的方式?
Prettier way to write this query?
您好,有更好/更漂亮的方式来编写此查询吗?
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);
}
});
}
};
唯一不同的是,如果管理员然后添加 .where('user').equals(req.user.id)
要消除重复代码,您可以重构代码,仅根据用户是否处于管理员角色来更改构建查询的方式:
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);
}
});
}
您好,有更好/更漂亮的方式来编写此查询吗?
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);
}
});
}
};
唯一不同的是,如果管理员然后添加 .where('user').equals(req.user.id)
要消除重复代码,您可以重构代码,仅根据用户是否处于管理员角色来更改构建查询的方式:
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);
}
});
}