Javascript 在节点和表达式中形成元素数组键

Javascript 在节点和表达式中形成元素数组键,javascript,forms,node.js,express,Javascript,Forms,Node.js,Express,尽管我尽了最大的努力,我还是坚持要把表单元素的数组键提交给NodeJS、Express和handlebar 我的表单元素如下所示: {{#each block}} <input type='text' name='block_payout[{{id}}]' /> {{/each} 但是,Node/Express中的req.body属性会删除这些键并创建索引数组: req.body [ block_payout [ 0 => value1 1 => v

尽管我尽了最大的努力,我还是坚持要把表单元素的数组键提交给NodeJS、Express和handlebar

我的表单元素如下所示:

{{#each block}}
<input type='text' name='block_payout[{{id}}]' />
{{/each}
但是,Node/Express中的req.body属性会删除这些键并创建索引数组:

req.body [
  block_payout [
    0 => value1
    1 => value2
    2 => value3
  ]
]

因为我想使用键将提交的值绑定到其他内容,这对我来说是个大问题。有人知道如何使用正确的键获取提交的表单数据吗?

当主体解析器只看到数字键时,它似乎使用数组(必须从索引0开始),当至少有一个非数字键时,它使用对象。考虑到这一点,您可以尝试以下方法之一:

  • 使用隐藏表单输入强制在数组上使用对象。例如:

    <input type='hidden' name='block_payout[null]' />
    <input type='text' name='block_payout[14]' />
    ...
    
    <input type='text' name='block_payout[i14]' />
    ...
    
  • 在关键点前面加上非数字字符以强制对象映射。例如:

    <input type='hidden' name='block_payout[null]' />
    <input type='text' name='block_payout[14]' />
    ...
    
    <input type='text' name='block_payout[i14]' />
    ...
    

  • 非常感谢。这种情况真是太遗憾了,我想知道它是否可以被视为一个bug。
    <input type='text' name='block_payout[i14]' />
    ...
    
    { block_payout: { i14: 'test1', i15: 'test2', i16: 'test3' } }