修改或保存数据到请求对象中

时间:2019-01-29 16:11:52

标签: javascript node.js typescript express nestjs

我使用nestjs构建REST API。

我有一个中间件,该中间件从redis缓存中加载数据,并应将其保存在请求对象中以在控制器功能中进行访问。

如果我使用express作为引擎,它可以工作,但是使用fastify不能工作。数据在控制器功能中未定义。

代码如下:

function mymiddleware(req, res, next) => {
    req.data = {...};
    next();
};

1 个答案:

答案 0 :(得分:1)

这是一个简单的工作示例:

const fastify = require('fastify')({ logger: true })

fastify.use(function (req, res, next) {
  console.log('middy')
  req.data = { hello: 'world' }
  next();
})

fastify.get('/', (req, res) => {
  res.send(`hello ${req.raw.data.hello}`)
})

fastify.listen(3000)

我认为您的问题是由于req对象引起的:在中间件(使用.use注册)中,您将获得标准的Node.js请求,而不是在fastify处理程序中使用增强的HTTPRequest。

因此,您可以使用.raw字段访问低级Http请求。