我在 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>

因此,如果您不需要数组,请将输入名称更改为第二个。