Bodysarser数字嵌套表单元素名称的问题

时间:2014-08-16 06:43:53

标签: node.js express connect

我有一个看起来或多或少像这样的表格:

<input type="checkbox" name="checklist[1]" value="1" /> <input type="checkbox" name="checklist[2]" value="1" /> <input type="checkbox" name="checklist[3]" value="1" />

我期待request.body.checklist看起来像这样(当然,在选中所有复选框之后): { '1': '1', '2': '1', '3': '1' }

但我得到的是一个数组,没有我需要关联结果的索引: ['1', '1', '1']

这对我来说似乎是个错误。如果我用一些字符串(比如id-)预先添加索引,我得到了对象但是......是否有解决方法所以我不需要将其更改为每个表单元素以及每个控制器?< / p>

1 个答案:

答案 0 :(得分:0)

1)您可以编写将为所有控制器执行此操作的中间件

2)您可以停止使用express.bodyParser并通过中间件解析数据,如此

app.use (function(req, res, next) {
    var data='';
    req.setEncoding('utf8');
    req.on('data', function(chunk) { 
       data += chunk;
    });

    req.on('end', function() {
        req.body = data;
        next();
    });
});
通过这种方式,您可以根据需要获得数据