Вы можете попробовать что-то вроде.
app.param(['id', 'type'], (req, res, next, value, key) => {
req.params.items = req.params.items ? req.params.items : {};
req.params.items[key] = value;
// Removing the default properties which gets added.
delete req.params[key];
next();
});
Это поможет вам внести изменения в ключ в req.params.
Ссылка: https://expressjs.com/en/4x/api.html#app.param
[или]
Другой способ - использовать промежуточное ПО в отношении вашего отредактированного вопроса. Вы можете попробовать что-то вроде
const getParamsAsJSONObject = (req, res, next) => {
const [emptypart, ...parts] = req.url.split('/');
console.log(parts);
req.customParams = parts.reduce((paramsObj, currentPart) => {
console.log(paramsObj);
console.log(currentPart);
const [parentKey, childKeyValue] = currentPart.split(':');
paramsObj[parentKey] = paramsObj[parentKey] ? paramsObj[parentKey] : {};
const [childKey, childValue] = childKeyValue.split('-');
paramsObj[parentKey][childKey] = childValue;
return paramsObj;
}, {});
next();
};
app.use('/users', getParamsAsJSONObject, (req, res, next) => {
console.log(req.customParams);
// Remaining Piece of the code to be added.
});