我使用nestjs构建REST API。
我有一个中间件,该中间件从redis缓存中加载数据,并应将其保存在请求对象中以在控制器功能中进行访问。
如果我使用express作为引擎,它可以工作,但是使用fastify不能工作。数据在控制器功能中未定义。
代码如下:
function mymiddleware(req, res, next) => {
req.data = {...};
next();
};
答案 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请求。