2016-01-20 5 views
0

У меня есть контроллер ExpressJS, что список всех моих пользователейУдалить поле моего JSON в конкретном случае

userCtrl.get:

get(req, res, next) { 
    var func = function(err, data) { 
    if (err) return next(err); 
    return res.json(data); 
    }; 

    if (req.params[this.idName]) 
    this._getById(req.params[this.idName], func); 
    else 
    this._getAll(func); 
    } 

    _getById(id, fn) { 
    this.ObjectClass.findById(id, fn); 
    } 
    _getAll(fn) { 
    this.ObjectClass.findAll(fn); 
    } 

Я хотел бы назвать это с другой дорогой , таким образом, что res.json() будет фильтровать поле этого JSON что-то вроде:

router.get ('/services/:serviceKey/authBridge/users', function(req, res, next) { 
    function anonJs(x) { 
    x.forEach(s => s.credential = null); 
    res.json(x); 
    } 
    res.json = anonJs; 
    userCtrl.get(req, res, next); 
}); 

Проблема заключается в том, что с этим последним фрагментом кода я получаю рекурсию, так как я вызываю res.json, который теперь определяется как anonJS

ответ

0

Перед заменой вы должны сохранить ссылку на старую функцию.

router.get ('/services/:serviceKey/authBridge/users', function(req, res, next) { 
    var json = res.json; 
    res.json = function(x) { 
    x.forEach(s => s.credential = null); 
    json(x); 
    } 

    userCtrl.get(req, res, next); 
}); 
Смежные вопросы