Передача промежуточного программного обеспечения Node.js в пользовательскую функцию

1

Вопрос о распространении промежуточного программного обеспечения. Скажем, у меня есть маршрут:

router.route('/replies/:board')
    .post(bodyThreadIdVal, textVal, passVal, replyHandler.postReply)

Теперь позвольте сказать, что я хотел перенести первые три аргумента промежуточного слоя сверху из метода post и в собственный метод, который я создал в другом файле с именем postReply. Как мне это сделать? Я думал, возможно, используя app.use в моем методе postReply но не уверен точно, как или если есть более чистый способ.

Я пробовал несколько методов, включая

this.postReply = async (req, res, next) => {
    app.use(bodyThreadIdVal, textVal, passVal)(req, res, next)
    /* additional code */
}

Но это, по-видимому, вызывает рекурсивный цикл, который отклоняет с Maximum call stack size exceeded

Теги:
express
middleware

1 ответ

0

Если единственная причина перемещения промежуточных элементов в отдельный файл группируется в одном месте и делает код более чистым, и нет необходимости создавать функцию, которая будет сочетать ваши средние, тогда я бы предложил группировать такие подключенные посредники в массив:

const postReply = [bodyThreadIdVal, textVal, passVal];

router.route('/replies/:board')
    .post(...postReply, replyHandler.postReply);

Если вам нужно добавить некоторый /* additional code */ просто создать новое промежуточное ПО и добавить его в массив postReply. Это определенно намного более чистый способ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню