将Node.js中间件传递给自定义函数

时间:2018-10-22 23:40:54

标签: javascript node.js express middleware

有关快速中间件的问题。假设我的路线如下:

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 :(得分:0)

如果将中间件移动到单独文件中的唯一原因是将它们集中在一个位置并简化代码,并且没有必要创建将您的中间件组合在一起的函数,那么我建议将此类连接的中间件分为一个数组:

const postReply = [bodyThreadIdVal, textVal, passVal];

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

如果您需要添加一些/* additional code */,只需创建一个新的中间件并将其添加到postReply数组中即可。这绝对是更干净的方法。