我對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-數據「'。所以多部分中間件不會產生額外的密鑰。 –