簡體   English   中英

更漂亮的方式來編寫此查詢?

[英]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);
        }
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM