将函数作为路由处理程序调用?

时间:2016-06-30 09:57:22

标签: node.js express

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

1 个答案:

答案 0 :(得分:0)

您可以连接一些运行标准渲染方法的Error-handling middleware。然后你的路线验证需要产生错误。