我已经开始学习 node.js
和 express
框架,当我发布这样的表格时:
router.get('/add-product',(req,res,next)=>{
res.send('<form action="/product" method="POST" ><input type="text" name="title" /><button type="submit">Submit</button></form>');
});
router.post('/product',(req,res,next)=>{
console.log(req.body);
res.redirect('/');
});
当我做 console.log(req.body)
它显示:
[Object: null prototype] { title: 'product' }
而不仅仅是 { title: 'product' }
我想知道这实际上是 express 的错误还是只是最近添加到 express 的专有性,因为我下载了去年创建的另一个项目并且它使用了相同的方法,当我这样做时 console.log(req.body)
,它显示相同的输出。
原文由 Mohamed Aarab 发布,翻译遵循 CC BY-SA 4.0 许可协议
这其实是很好的设计。默认情况下,对象继承
Object.prototype
包含一些辅助函数(.toString()
,.valueOf()
)。现在,如果您使用req.body
并且不向 HTTP 请求传递任何参数,那么您会期望req.body
为空。如果它只是“一个常规对象”,它就不会完全是空的:有一种方法可以创建“空对象”,即没有任何属性/原型的对象,那就是
Object.create(null)
。您正在控制台中看到这些对象之一。所以不,这不是一个需要修复的错误,这只是对 JS 特性的很好利用。