我对express.urlencoded()中间件生成的request.body有点问题。在某些情况下,在request.body对象的末尾添加__proto__
和比它不能直接用于启动moongose模型,像这样var user = new User(req.body)
Express.js请求正文__proto__
作为一个例子,我将使用node-express-mongoose-demo库。所有形式的工作得很好,但app.post('/users', users.create)
临危req.body“污染”与__proto__
预先感谢任何帮助
这种解决方法可以像以下那样重新创建正文对象:'var fields = Object.create(req.body)'但是您是否真的知道为什么有时会添加__proto__并且有时不会? –
我在创建对象时没有看到任何奇怪的东西,所以我不确定'req.body.proto'来自哪里,但是您的应用中可能还有其他一些中间件是在污染它? https://github.com/senchalabs/connect/blob/7edb875a9f305e38f4d960fa46ac674038241892/lib/middleware/urlencoded.js#L47 –
我发现'__proto__'没有添加,当窗体有属性'enctype =“multipart/form-数据“'。所以多部分中间件不会产生额外的密钥。 –