我为以下路线获得了这个中间件:
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'
有效,这不是必要的
答案 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) => {