我正在构建一个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;
}
};