通过中间件

时间:2017-02-28 18:04:21

标签: node.js express middleware

我为以下路线获得了这个中间件:

router.param('userId', (req, res, next, val) => {
            if (!/^\d+$/i.test(val)) {
                globalResponse.sendResponse(res, 400, `la sintaxis de entrada no es válida para integer: «${val}»`, true);
            } else {
                next();
            }
        });

路线是:

router.get('/user/:userId', (req, res) => {
        let userId = req.params.userId,
            criteria = {};
        criteria.userId = Number(userId);
        users.findUserByCriteria(criteria)
            .then(userFinded => {
                if (userFinded != null) {
                    globalResponse.sendResponse(res, 200, userFinded, false);
                } else {
                    globalResponse.sendResponse(res, 404, `Usuario ${userId} no Encontrado.`, true);
                }
            })
            .catch(err => {
                globalResponse.sendResponse(res, 500, err, true)
            });
    });

一切正常,错误是当尝试使用其他路由'/user/'中间件有效时没有路径参数'userId'

router.get('/user/all', (req, res) => {
        users.findAllUsers()
            .then(allUsers => {
                globalResponse.sendResponse(res, 200, allUsers, false);
            })
            .catch(err => {
                globalResponse.sendResponse(res, 500, err, true);
            });
    });

然后在'user/all'有效,这不是必要的

1 个答案:

答案 0 :(得分:0)

您可以进行一些更改以接受所有参数

 router.param('userId', (req, res, next, val) => {
    if(val=="all")  
   {
    next();
   }else if (!/^\d+$/i.test(val)) {
                    globalResponse.sendResponse(res, 400, "la sintaxis ...", true);
                } else {
                    next();
                }
            });

以及后面的代码

 let userId = req.params.userId,
if(userId=="all"){
 users.findAllUsers()
            .then(allUsers => {
                globalResponse.sendResponse(res, 200, allUsers, false);
            })
            .catch(err => {
                globalResponse.sendResponse(res, 500, err, true);
            });
} 

.........
......

您不需要此路由器router.get('/user/all', (req, res) => {