我想找到一些现有的中间件或一些方便的代码,用方括号(即'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,所以会喜欢一些方向。
由于
答案 0 :(得分:4)
您能否提供一些关于您想要实现的目标的澄清?
根据您首先从Web表单获取输入的方式,您可以使用内置的JSON.parse()(docs here)轻松地将JSON语法解析为实际对象(包括数组)的node.js
使用该方法可以拥有无限级别的嵌套值(哈希/对象和数组),但是您需要一些客户端脚本才能将值放在首位(例如jQuery) )。
如果你给出一个更全面的例子,包括提交表格的背景,我可能会给出更好的指示......
答案 1 :(得分:2)
根据我的经验,你可以简单地做这样的事情......
<强>玉强>
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
});
我不知道这是否有意义,但这就是你如何对待它们......至少在快递3.0 +
答案 2 :(得分:0)
我通过使用https://github.com/marioizquierdo/jquery.serializeJSON解决了这个问题 - 问题在于,如果我只提交一个POST表单来表示它不会将括号作为数组处理,那么它们必须手动复制。通过使用插件将表单解析为JSON,我可以通过ajax提交它。