Я изучаю 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 )возвращает промежуточное программное обеспечение, оно выполняется в цепочке маршрутизации -. Я понял. Однако:
Откуда в возвращаемой функции берутся параметры req, res, next? Я предполагаю, что "цепочка" каким-то образом ставит его в очередь и оценивает параметры, но это слишком расплывчато для более глубокого понимания...
Что происходит с ошибкой, которая возникает как параметр next? Ошибка просто разрывает цепочку промежуточного программного обеспечения?
Если я захочу упаковать механизм ограничения в отдельный файл/модуль (, как инфраструктуру безопасности ), как это сделать?
Было бы здорово, если бы кто-нибудь указал основную идею:)