数组长度在node.js中

我有forms对象从angularjs返回节点js在控制台中看起来像这样,

对于两个文件,

filenames : [object Object],[object Object] # filenames object for two files length: 2 # used object.length 

对于一个文件,

 filenames : [object Object] # filenames object for one file length: undefined # used object.length 

我是Node js的新手,有谁能解释我为什么这样?

编辑

ProfileController.js(客户端)

 var fd = new FormData() var filenames = $scope.postTextOrImageParams.imageUrl; for( var i = 0; i < filenames.length; i++ ) { fd.append("imageData",$scope.postTextOrImageParams.imageUrl[i]); } 

user.js(服务器端)

 var filenames = req.files.imageData; console.log(typeof filenames); //-> object console.log('filenames : '+filenames); console.log('length: '+filenames.length); function uploader(i) { if( i < filenames.length ) { utils.saveMediaPic(filenames[i],function(error,savedImagePath){ if( error ) { console.log('error: '+error) } else { console.log("SAVED IMAGE ====>"+savedImagePath); post.content.imageUrl.push(savedImagePath); uploader(i+1) } }); } 

如果在body中有多个具有相同名称的参数,bodyParser将生成一个数组。 你的问题是,当你只有一个参数时,情况并非如此。

为了强制这样,你可以在扩展版本中使用bodyParser。

 app.use(bodyParser.urlencoded({ extended: true })); 

并用方括号调用参数imageData []

 fd.append("imageData[]",... 

正如你可以在http://npmjs.com/package/qs#readme文档中find&#x7684;

这将触发扩展parsing器始终返回一个数组。