【问题标题】:I've got a weird behaviour on req.body on put request on a specific field在对特定字段提出请求时,我在 req.body 上有一个奇怪的行为
【发布时间】:2019-09-27 12:23:49
【问题描述】:

我创建了一个表单来将一个新的不动产保存到 MongoDB,使用 multer 处理多部分表单数据和 body-parser。

除了 "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>

【问题讨论】:

  • 能贴出完整的表格代码吗?
  • 您好马科斯,非常感谢您的关注,非常感谢!它实际上是一个巨大的表格,但我添加了一些其他相关字段,可能会使其更清晰。
  • 那个表单和你的后台代码和console.log显示的不一样,没有squareFeets输入,所以请输入实际代码。您的表单有问题,所以要么输入整个代码,要么没有人可以帮助您。
  • 对不起,表格是意大利语的,所以我一定是翻译了一些错误,如果你想看一下,这里是该项目的完整 Git 存储库! github.com/ZeldOcarina/casa-lugano
  • 完整的表单在“views”目录中,它被称为“immobile-edit.ejs”,而这个放置路由被称为“immobili.js”,它位于“routes”文件夹中。

标签: javascript node.js ejs multer body-parser


【解决方案1】:

天哪,我太愚蠢了,我在表单中放入了两个具有相同名称的输入值,因此这些值被保存为一个数组。

对此我感到非常抱歉。感谢您的宝贵时间!

【讨论】:

    【解决方案2】:

    当你得到一个数组时,是因为你有多个同名的输入:

    <input name="rooms" value="<%= estate.rooms %>"></input>
    
    <input name="rooms" value="other-value"></input>
    

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

    【讨论】:

    • 再次感谢您,请原谅我的数据不完整! :)
    • 别担心,下次你会知道提出一个完整的问题,这样你会得到一个更快的答案:)
    猜你喜欢
    • 1970-01-01
    • 2011-02-06
    • 2017-05-15
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 2021-10-11
    相关资源
    最近更新 更多