Вызов связанного метода express-validator
возвращает функцию промежуточного программного обеспечения, и, поскольку функции могут иметь свойства, вы можете вызвать метод для этой возвращенной функции, которая возвращает новую функцию с методами и так далее. Цепные функции довольно просты:
const chain = (pairs, fn = el => el) => {
for(const [key, method] of pairs)
fn[key] = (...opt) => chain(pairs, method(fn)(...opt));
return fn;
};
const math = chain([
["add", prev => a => b => prev(b) + a],
["mul", prev => a => b => prev(b) * a]
]);
console.log(
(math.add(5).mul(3).add(3))(5)
);