我在 req.body 上对特定字段的放置请求有一个奇怪的行为
I've got a weird behaviour on req.body on put request on a specific field
我创建了一个表单来将新的房地产保存到 MongoDB,使用 multer 处理多部分表单数据和正文解析器。
除了 "put" (EDIT) 路由中的 "rooms" 之外一切正常,它作为数组返回,而不是单个值,这完全没有意义,因为其他一切正常就好了。
我尝试将数组中的数据转换为单个数值,但这不起作用,就像我再次尝试编辑文档一样,新值被推入数组而不是替换旧值一.
//EDIT PUT ROUTE
router.put("/immobili/:_id/edit",
upload.fields([{ name: 'estateImages', maxCount: 30 },
{ name: 'document', maxCount: 1 }]),
(req, res) => {
// IMAGES LOGIC SKIPPED HERE AS NOT PERTINENT
Estate.findOneAndUpdate({ _id: requestedId }, {
rooms: req.body.rooms, //BUGGED
squareFeets: req.body.squareFeets, //WORKS CORRECTLY
//CALLBACK ...
}}
// result of console.log of req.body.rooms and req.body.squareFeets
rooms: [ '2', '' ],
squareFeets: 120
//EJS FORM DATA
<form action="/estates/<%= estate._id %>/edit?_method=PUT" method="POST"
enctype="multipart/form-data">
//INPUT NOT WORKING:
<input name="rooms" value="<%= estate.rooms %>"></input>
//INPUT THAT WORKS:
<input name="superficie" value="<%= estate.squareFeets %>"></input>
<input type="submit" value="Publish">
</form>
天哪,我太蠢了,我在表单中输入了两个具有相同名称值的输入,因此这些值被保存为一个数组。
对此我感到非常抱歉。感谢您的宝贵时间!
当你得到一个数组时,是因为你有多个同名的输入:
<input name="rooms" value="<%= estate.rooms %>"></input>
<input name="rooms" value="other-value"></input>
因此,如果您不需要数组,请将输入名称更改为第二个。
我创建了一个表单来将新的房地产保存到 MongoDB,使用 multer 处理多部分表单数据和正文解析器。
除了 "put" (EDIT) 路由中的 "rooms" 之外一切正常,它作为数组返回,而不是单个值,这完全没有意义,因为其他一切正常就好了。
我尝试将数组中的数据转换为单个数值,但这不起作用,就像我再次尝试编辑文档一样,新值被推入数组而不是替换旧值一.
//EDIT PUT ROUTE
router.put("/immobili/:_id/edit",
upload.fields([{ name: 'estateImages', maxCount: 30 },
{ name: 'document', maxCount: 1 }]),
(req, res) => {
// IMAGES LOGIC SKIPPED HERE AS NOT PERTINENT
Estate.findOneAndUpdate({ _id: requestedId }, {
rooms: req.body.rooms, //BUGGED
squareFeets: req.body.squareFeets, //WORKS CORRECTLY
//CALLBACK ...
}}
// result of console.log of req.body.rooms and req.body.squareFeets
rooms: [ '2', '' ],
squareFeets: 120
//EJS FORM DATA
<form action="/estates/<%= estate._id %>/edit?_method=PUT" method="POST"
enctype="multipart/form-data">
//INPUT NOT WORKING:
<input name="rooms" value="<%= estate.rooms %>"></input>
//INPUT THAT WORKS:
<input name="superficie" value="<%= estate.squareFeets %>"></input>
<input type="submit" value="Publish">
</form>
天哪,我太蠢了,我在表单中输入了两个具有相同名称值的输入,因此这些值被保存为一个数组。
对此我感到非常抱歉。感谢您的宝贵时间!
当你得到一个数组时,是因为你有多个同名的输入:
<input name="rooms" value="<%= estate.rooms %>"></input>
<input name="rooms" value="other-value"></input>
因此,如果您不需要数组,请将输入名称更改为第二个。