【问题标题】:Prettier way to write this query?编写此查询的更漂亮的方式?
【发布时间】:2015-04-05 08:57:19
【问题描述】:

嗨,有没有更好/更漂亮的方式来编写这个查询?

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)

【问题讨论】:

  • 我投票结束这个问题,因为它更适合codereview.stackexchange.com
  • @Andy 我也是这么想的,但我认为它是 Mongoose 特有的,足以成为话题。

标签: javascript mongodb rest mongoose database


【解决方案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);
        }
    });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    • 2020-07-31
    相关资源
    最近更新 更多