在节点和expression式中形成元素数组键

尽pipe我尽了最大的努力,但我一直在获取提交给NodeJS和Express以及句柄的表单元素的数组键。

我的表单元素看起来像这样:

{{#each block}} <input type='text' name='block_payout[{{id}}]' /> {{/each} 

这会在浏览器中产生以下标记:

 <input type='text' name='block_payout[14]' /> <input type='text' name='block_payout[15]' /> <input type='text' name='block_payout[16]' /> 

在PHP中这将导致一个数组作为$ _POST数组的元素:

 $_POST [ block_payout [ 14 => value1 15 => value2 16 => value3 ] ] 

但是,Node / Express中的req.body属性会删除这些键并创build一个索引数组:

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

因为我想用这个键把提交的值绑定到别的东西上,这对我来说是一个很大的问题。 有谁知道我怎么能得到提交的表单数据与正确的密钥?

它看起来像身体分析器使用一个数组(它必须从索引0开始),当它只能看到数字键,而对象至less有一个非数字键。 考虑到这一点,你可以尝试以下方法之一:

  1. 使用隐藏的表单input来强制使用数组上的对象。 例:

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

    结果如下:

     { block_payout: { '14': 'test1', '15': 'test2', '16': 'test3', null: '' } } 
  2. 使用非数字字符前缀您的键以强制对象映射。 例:

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

    结果如下:

     { block_payout: { i14: 'test1', i15: 'test2', i16: 'test3' } }