Middleware внутри другого Middleware в ExpressJS

206
24 марта 2022, 09:00

Пишу свой middleware для ExpressJS и столкнулся с задачей, где нужно использовать куки. Для этого существует отдельный middleware - cookie-parser. Однако я пока лишь вижу примеры того, как его использовать непосредственно в приложении. Просто импортировать функцию и передать в неё req нельзя. Мой код на expressjs выглядит так:

export function(params) {
    // здесь производится merge и валидация настроек моего middleware
    return function(req, res, next) {
        // тут уже логика самого middleware
        // и тут нужно прочитать куки
        // но я не знаю как здесь использовать cookie-parser
        // у меня нет app и я не могу сделать app.use(cookieParser())
    }
}
Answer 1

Обычно куки в конечном итоге нужны всем или большинству мидлварей, так что проще таки добавить вызов cookieparser в самое начало и не заморачиваться.

Но если очень надо, то express в качестве мидлвари умеет принимать массив (везде или почти везде), так что в вашем случае достаточно сделать так:

export function(params) {
    // здесь производится merge и валидация настроек моего middleware
    return [ cookieparser(), function(req, res, next) {
        // тут уже логика самого middleware
        // и тут нужно прочитать куки
        // но я не знаю как здесь использовать cookie-parser
        // у меня нет app и я не могу сделать app.use(cookieParser())
    } ];
}

Впрочем, в вашем случае так же можно просто взять модуль cookie и вызвать метод parse самостоятельно

READ ALSO
Как проверить значение value с переданным значением

Как проверить значение value с переданным значением

У меня есть данный кусок кодаУ меня есть 9 input'ов, мне нужно, чтобы при submit'e происходила проверка, если value = переданному значению datavalue, то тогда...

182
Увеличить кнопки и расстояние между ними блок «Поделиться» Яндекс

Увеличить кнопки и расстояние между ними блок «Поделиться» Яндекс

Возможно-ли увеличить размер и расстояние между кнопками в блоке «Поделиться» ЯндексВ мобильной версии очень маленькие кнопки и расстояние...

66
Файл скачивается не полностью c#

Файл скачивается не полностью c#

Такая проблемаЯ скачиваю файл с ФТП через обычный WebClient()

124
Асинхронный вызов функции Windows Forms C#

Асинхронный вызов функции Windows Forms C#

У меня есть асинхронная функцияОна вызывается только один раз, когда форма отображается в первый раз

92