发送给节点/快递服务器的数组访问值

问题描述:

让我先说我是一个新手/黑客。答案可能很简单...我提前道歉。发送给节点/快递服务器的数组访问值

我通过jquery $ .ajax(POST)将对象发送到运行express的Node.js服务器。该物体看起来像这样我的服务器上我做的Ajax调用之前:

var data = { 
    "to" : "[email protected]", 
    "attachment" : [{"file": "somefile.jpg"}, {"file": "someOtherFile.jpg"}] 
} 

这是调用我的服务器:

$.ajax({ 
    type: "POST", 
    url: "http://myHostHere.com", 
    data: data, 
    success: function(data){ 
     console.log("Success... Returned Data: " + data); 
    } 
}); 

在我的节点服务器这里是接受请求的路径:

app.post('/send/', urlEncodeParser, function(req, res){ 
     console.log("Req Body: " + JSON.stringify(req.body)); 
     }); 

urlEncodeParser的中间件是指这样的代码:

let urlEncodeParser = bodyParser.urlencoded({ extended:false });  

我的接收节点服务器接收对象,我可以很容易地通过req.body.to获得“to”的值没问题......出于某种原因,我无法弄清楚如何访问'文件'值虽然。当我在我的节点服务器上console.logreq.body我现在看到我的对象看起来不同。

具体来说,我叫console.log(JSON.stringify(req.body))

输出到控制台看起来是这样的:

"to" : "[email protected]", 
"attachment[0][file]" : "somefile.jpg", 
"attachment[1][file]" : "someOtherFile.jpg" 

我无法弄清楚如何访问我的代码的attachment[0][file]值。我曾尝试每一次我得到一个错误TypeError: Cannot read property '0' of undefined

req.body.attachment[0].filereq.body.attachment[0][file]req.body.attachment[0]['file']我也尝试只是console.log("attachment: " + req.body.attachment)和我attachment: undefined

任何帮助非常感谢!

+0

看起来中间件没有解析它,所以它实际上是'req.body [“attachment [1] [file]”]'来访问它 – adeneo

+0

Thanks @adeneo that works ... now to弄清楚为什么会发生这种情况。 – Koreys

您可以用括号标记访问该值:

req.body['attachment[0][file]'] 

更重要的是,虽然你找出为什么您的请求负载看起来像......不幸的是你没有提供任何信息,你怎么送请求...

+0

我更新了原始帖子,提供了更多信息......我认为这与中间件有关系吗? – Koreys

+0

@Koreys - look [here](http://stackoverflow.com/questions/6323338/jquery-ajax-posting-json-to-webservice?lq=1) – Amit