数组长度在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的
这将触发扩展parsing器始终返回一个数组。