Как получить несколько пар ключевых значений в массиве объекта через отправку данных формы - PullRequest
0 голосов
/ 26 мая 2020

У меня есть данные формы, в которых я использовал l oop для создания текстовых полей типа ввода.

Итак, с помощью l oop, когда я открываю данные формы через элемент inspect, у меня было что-то вроде этого:

< 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'},
]

, так что я использовал функцию карты для обновления значения по одному на mongodb или использовал функцию массовой записи для обновления всех сразу.

Я пытался поместите [] перед значением в name = "". Как это name = "[] position1", но безуспешно.

Есть ли кто-нибудь, кто может помочь мне в этом.

1 Ответ

0 голосов
/ 26 мая 2020

Если вы хотите иметь коллекцию / массив, вы можете сгенерировать форму следующим образом:

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

В узле js / на стороне сервера вы можете ожидать свои данные в 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'},
]
...