有没有简单的方法将multipart / form数据转换为NodeJS中的数组?

时间:2016-10-20 07:14:16

标签: javascript arrays node.js forms sails.js

我正在尝试一些输入来在Sails / nodeJS中将数据作为数组获取;

当我尝试这种方式然后将数据完美地获取数组。

<input type="text" class="form-control" name="answer[1][txt]">
 <input type="text" class="form-control" name="answer[1][img]">
 <input type="text" class="form-control" name="answer[2][txt]">
 <input type="text" class="form-control" name="answer[2][img]">

输出:

answer:[ { txt: 'ans 1', img: 'yes' }, { txt: 'ans 2', img: 'yes' } ]

但是当我在表单中使用enctype(enctype =“multipart / form-data”)属性时,则无法像以前的方法那样获取数据。 输出:

  'answer[0][txt]': 'ans 1', 'answer[0][img]': 'yes', 
'answer[1][txt]': 'ans 2','answer[1][img]': 'yes',

我不知道使用enctype属性时发生了什么。我只想使用enctype(multipart / form-data)属性返回第一个输出数据。 谢谢

1 个答案:

答案 0 :(得分:0)

您可以从当前返回的对象创建一个新对象;使用for..in循环来迭代对象,匹配属性的"txt""img"部分,将值设置为现有对象的值

let data = {
  'answer[0][txt]': 'ans 1',
  'answer[0][img]': 'yes',
  'answer[1][txt]': 'ans 2',
  'answer[1][img]': 'yes'
};

let res = {
  answer: []
};

for (let prop in data) {
  res.answer.push({
    [prop.match(/txt|img/)[0]]: data[prop]
  })
}

console.log(res);