Объем функций промежуточного программного обеспечения в express.js

Я изучаю express.js/node.js и хорошо, но не отлично понимаю модель прототипа javascript. Следовательно, я немного запутался в том, как промежуточное ПО может быть сложено в механизмах маршрутизации express.js.

Скажем, у нас есть этот код

function andRestrictTo(role) {
    return function(req, res, next) {
       req.authenticatedUser.role == role
           ? next() : next(new Error('Unauthorized'));
   }
}

app.del('/user/:id', loadUser, andRestrictTo('admin'), function(req, res){
    res.send('Deleted user ' + req.user.name);
});

Поскольку andRestrictTo (role )возвращает промежуточное программное обеспечение, оно выполняется в цепочке маршрутизации -. Я понял. Однако:

  1. Откуда в возвращаемой функции берутся параметры req, res, next? Я предполагаю, что "цепочка" каким-то образом ставит его в очередь и оценивает параметры, но это слишком расплывчато для более глубокого понимания...

  2. Что происходит с ошибкой, которая возникает как параметр next? Ошибка просто разрывает цепочку промежуточного программного обеспечения?

  3. Если я захочу упаковать механизм ограничения в отдельный файл/модуль (, как инфраструктуру безопасности ), как это сделать?

Было бы здорово, если бы кто-нибудь указал основную идею:)

9
задан shredding 30 June 2012 в 08:09
поделиться