javascript - kunci susunan elemen borang dalam node dan express
Walaupun dengan segala usaha saya, saya masih tersekat untuk mendapatkan kunci array bagi elemen borang yang dihantar ke NodeJS dan Express serta handlebars.
Elemen borang saya kelihatan seperti ini:
{{#each block}}
<input type='text' name='block_payout[{{id}}]' />
{{/each}
Ini menghasilkan markup berikut dalam pelayar:
<input type='text' name='block_payout[14]' />
<input type='text' name='block_payout[15]' />
<input type='text' name='block_payout[16]' />
Dalam PHP ini akan menghasilkan satu array sebagai elemen bagi array $_POST:
$_POST [
block_payout [
14 => value1
15 => value2
16 => value3
]
]
Walau bagaimanapun, sifat req.body dalam Node/Express menghapuskan kekunci ini dan mencipta susunan berindeks:
req.body [
block_payout [
0 => value1
1 => value2
2 => value3
]
]
Memandangkan saya ingin menggunakan kunci itu untuk mengaitkan nilai yang dihantar dengan sesuatu yang lain, ini merupakan masalah besar bagi saya. Adakah sesiapa tahu bagaimana saya boleh mendapatkan data borang yang dihantar dengan kunci yang betul??
Jawapan #1
Nampaknya pemparsi badan menggunakan satu tatasusunan (yang mesti bermula pada indeks 0) apabila ia melihat hanya kekunci berangka, dan satu objek apabila terdapat sekurang-kurangnya satu kekunci yang bukan berangka. Dengan itu dalam fikiran, anda boleh mencuba salah satu daripada kaedah berikut:
Gunakan input borang tersembunyi untuk memaksa penggunaan objek berbanding array. Contoh:
<input type='hidden' name='block_payout[null]' /> <input type='text' name='block_payout[14]' /> ...Keputusan dalam badan berikut:
{ block_payout: { '14': 'test1', '15': 'test2', '16': 'test3', null: '' } }Prefiks kunci anda dengan aksara bukan nombor untuk memaksa pemetaan objek. Contoh:
<input type='text' name='block_payout[i14]' /> ...Keputusan dalam badan berikut:
{ block_payout: { i14: 'test1', i15: 'test2', i16: 'test3' } }
