【发布时间】: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