在节点和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有一个非数字键。 考虑到这一点,你可以尝试以下方法之一:
-
使用隐藏的表单input来强制使用数组上的对象。 例:
<input type='hidden' name='block_payout[null]' /> <input type='text' name='block_payout[14]' /> ...
结果如下:
{ block_payout: { '14': 'test1', '15': 'test2', '16': 'test3', null: '' } }
-
使用非数字字符前缀您的键以强制对象映射。 例:
<input type='text' name='block_payout[i14]' /> ...
结果如下:
{ block_payout: { i14: 'test1', i15: 'test2', i16: 'test3' } }