Я строю REST-API и имеют функцию рендеринга, которая выглядит следующим образом:Вызовите функцию маршрутного обработчика?
render = (req, res) => {
var output = {},
async = [],
detailed;
if(req.user){
detailed = req.user.obj.detailed();
async.push(detailed);
}
if(Object.keys(req.query).length){
output.params = req.query;
}
if(req.validationErrors().length > 0){
output.errors = req.validationErrors();
}
sequelize.Promise.all(async).then((response) => {
if(response.length > 0){
output.user = response[0];
}
res.json(output);
});
};
Она захватывает материал и выводит данные его как JSON. Обычно он запускается как последняя функция в любом запросе:
app.all('/user/me', auth, render);
В приложении я также проверяю входные данные на разных этапах. Если вход не работает, я хочу перейти непосредственно к рендерингу. Чтобы избежать прохождения вокруг req/res повсюду, я хотел бы как-то перейти к этой маршрутизации, а не вызвать функцию, как я сейчас, это возможно? Я не могу использовать следующий, потому что иногда осталось несколько функций.
validate = (tests) =>{
req.assert(tests);
//Go to render if validation fails.
//req,res
if (req.validationErrors().length) {
return render(req, res);
}else{
return true;
}
};