如何将数据传递给NodeJS中的下一个中间件函数

时间:2017-10-24 11:59:39

标签: node.js express middleware

我正在为套接字系统编写自己的中间件实现。我已经阅读了Laravel的中间件的源代码以及有关ExpressJS实现的一些文档,以获得灵感。

但是,我在将数据从一个中间件处理程序传递到另一个中间件时遇到困难。

我在下面写了一个非常基本的例子。输出应该是4,但我不知道如何将输出从一个处理程序传递到另一个处理程序。我通过设置一个临时变量来猜测,但我不确定它是多么高效。

let each = require('lodash/each')
class Middleware {
  constructor() {
    this.handlers = [
      function (data) {return data + 1},
      function (data) {return data + 2}
    ]
  }
}

class Router {
  constructor() {
    this.middleware = new Middleware
  }
  route(data) {
    each(this.middleware.handlers, function(handler) {
      handler(data) // no idea what to do here
    })
  }
}


class Socket {
  constructor() {
    this.router = new Router
  }
  write(data) {
    return this.router.route(data)
  }
}

let router = new Router

console.log(socket.write(1)) // should be 4

1 个答案:

答案 0 :(得分:0)

更改route课程内的Router功能如下,socket.write(1)的结果将为4:

class Router {
    constructor() {
        this.middleware = new Middleware
    }
    route(data) {
        each(this.middleware.handlers, function (handler) {
            data = handler(data)
        })
        return data
    }
}