-1

我尝试实现自己的中间件,类似于app.use(express.json())

代码在这里

const rahul_express={
    json(){
        return (req,res,next)=>{
            let arr=[]
            req.on('data',(chunk)=>{
                arr.push(chunk)
            })
            req.on('end',(fin)=>{
                const parserbody=new Buffer.concat(arr).toString()
                
                req.body=JSON.parse(parserbody)
                console.log(req.body)                
            })
            next() 
        }
    }
}

app.use(rahul_express.json())

我已经尝试解析 JSON 并将其添加到 req 但仍然在其他中间件中我无法访问 req.body 数据,我不知道为什么,任何帮助将不胜感激!

4

1 回答 1

1

事件被称为“异步”,这意味着代码不会等到事件发出。这意味着在事件完成之前next()运行。

解决此问题的正确方法是在事件的回调next()内部使用,如下所示:end

req.on('end', (fin) => {
    const parserbody = new Buffer.concat(arr).toString();
    req.body = JSON.parse(parserbody);
    console.log(req.body);
    next();
})
于 2021-05-29T01:39:05.400 回答