Expressjs-将表单数组/括号字段解析为实际数组

Expressjs - parsing form array/bracket fields to real arrays

本文关键字:数组 字段 表单 Expressjs-      更新时间:2023-09-26

我想找到一些现有的中间件或一些方便的代码,将带有方括号的表单字段(即"contact[21][name]'")转换为ExpressJS 3的真实数组。

大致如下:

for(key in req.body){
    if(key.isArrayField()) {
       //add new array field to req.body and delete old string version from req.body
...

我想解析无限深度的括号。我仍在学习JS/Node,所以希望能找到一些方向。

感谢

你能澄清一下你试图用它实现什么吗?

根据您最初从web表单获取输入的方式,您可以使用node.js 中内置的JSON.parse()(此处为docs)轻松地将JSON语法解析为实际对象(包括数组)

使用该方法,您可以拥有无限级别的嵌套值(散列/对象和数组),但您需要一些客户端脚本将值放在首位(例如jQuery)。

如果你举一个更全面的例子,包括提交表格的背景,我可能会给出更好的指导。。。

根据我的经验,你可以简单地做这样的事情。。。

翡翠

input(type="text" name="foo[]" value="foo1")
input(type="text" name="foo[]" value="foo2")

JS

app.post('/test', function(req,res){
    console.log(req.body)// { foo: [ 'foo1', 'foo2' ] }
    console.log(req.body.foo)//["foo1","foo2"]
    console.log(req.body.foo[0])//foo1
    console.log(req.body.foo[1])//foo2
});

我不知道这是否有道理,但这就是你对待他们的方式。。。至少在express 3.0+

我使用https://github.com/marioizquierdo/jquery.serializeJSON-问题是,如果我只是提交一个POST表单来表达它,它不会将括号作为数组处理,因此必须手动对其进行正则表达式。通过使用插件将表单解析为JSON,我可以通过ajax提交它。