如何使用busboy获取数组表单数据?
路线:
req.busboy.on('field', function(fieldname, val){
//fieldname is string, expecting array
//'bunnies[gray]', etc...
});
我的观点:
form(method="post" action="/post/path" enctype="multipart/form-data")
input(name="bunnies[gray]")
input(name="bunnies[white]")
input(name="bunnies[black]")
input(name="bunnies[brown]")
input(name="bunnies[purple]")
答案 0 :(得分:0)
问题相当陈旧,但万一其他人偶然发现了这个问题,这就是我所做的:
var arr = new Array();
req.pipe(req.busboy);
req.busboy.on('field', function(key, value) {
if(key === 'array_name[]') {
arr.push(value);
}
});
req.busboy.on('finish', function() {
console.log(arr);
});
答案 1 :(得分:0)
问题是否5岁,但这给了我一个提示。我来自PHP背景,但没有意识到Busboy是这个愚蠢的人,因此,如果您要处理字段数组,则需要像这样实际处理它们:
busboy.on('field', (fieldname, val) => {
if (fieldname.indexOf('[]') !== -1) {
let fn = fieldname.replace('[]', '');
if (typeof req.body[fn] === 'undefined') {
req.body[fn] = [];
}
req.body[fn].push(val);
} else {
req.body[fieldname] = val;
}
});
希望可以节省别人几个小时的调试时间...