如何通过表单数据提交获取对象数组下的多个键值对。

问题描述 投票:0回答:1

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

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

< 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",但没有成功。

有没有人可以指导我一下。

javascript html node.js form-data
1个回答
0
投票

如果你想拥有一个collectionarray,你可以生成如下的表单。

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

在node jsserver端,你可以期待你的数据在: 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'},
]
© www.soinside.com 2019 - 2024. All rights reserved.