Вопрос о распространении промежуточного программного обеспечения. Скажем, у меня есть маршрут:
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
Если единственная причина перемещения промежуточных элементов в отдельный файл группируется в одном месте и делает код более чистым, и нет необходимости создавать функцию, которая будет сочетать ваши средние, тогда я бы предложил группировать такие подключенные посредники в массив:
const postReply = [bodyThreadIdVal, textVal, passVal];
router.route('/replies/:board')
.post(...postReply, replyHandler.postReply);
Если вам нужно добавить некоторый /* additional code */
просто создать новое промежуточное ПО и добавить его в массив postReply
. Это определенно намного более чистый способ.