首页 > 解决方案 > 如何通过表单数据提交获取对象数组下的多个键值对

问题描述

我有一个表单数据,我在其中使用循环生成输入类型的文本字段。

所以在循环的帮助下,当我通过检查元素打开表单数据时,我得到了这样的东西:

< input type="text" name="position1" />
< input type="text" name="position2" />
< input type="text" name="position3" />
< input type="text" name="position4" />

当我提交表单时,在 Node.js 上,当我通过 request.body 获取请求时,我得到了这样的结果:

{
      position1: '1',
      position2: '2',
      position3: '3',
      position4: '4'
}

我在看的是什么

[
 {position1: '1'},
 {position2: '2'},
 {position3: '3'},
 {position4: '4'},
]

所以我使用map函数在mongodb上一一更新值或使用bulkwrite函数一次更新。

我试图将 [] 放在 name="" 的值之前。喜欢这个 name="[]position1" 但没有成功。

有没有人可以指导我。

标签: javascripthtmlnode.jsform-data

解决方案


如果你想要一个集合/数组,你可以生成如下形式:

<input type="text" name="positions[]" />
<input type="text" name="positions[]" />
<input type="text" name="positions[]" />
<input type="text" name="positions[]" />

在节点 js/server 端,你可以期望你的数据是req.body.positions这样的

[
  1,
  2,
  3,
  4
]

如果名称末尾的后缀或数字是您想要保留的东西,您可以考虑转换您的数据,例如

var transformedPositions = req.body.positions.map(function(positionValue,index){
   var newKeyName = "position"+(index+1);
   return {newKeyName:positionValue}
})

然后会给你这个transformedPositions

[
 {position1: '1'},
 {position2: '2'},
 {position3: '3'},
 {position4: '4'},
]

推荐阅读