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

Вопрос по экспресс-промежуточному программному обеспечению.Допустим, у меня есть маршрут, подобный следующему:

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

1 Ответ

0 голосов
/ 24 октября 2018

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

const postReply = [bodyThreadIdVal, textVal, passVal];

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

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

...