node.js中的数组长度

时间:2015-06-19 07:29:14

标签: arrays angularjs node.js

我有从js到节点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)
          }
    });
}

1 个答案:

答案 0 :(得分:1)

如果在体内有多个具有相同名称的参数,则bodyParser将生成一个数组。问题在于,当你只有一个参数时就不是这样了。

为了强制执行此操作,您可以在扩展版本中使用bodyParser。

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

并使用方括号imageData []

调用参数
fd.append("imageData[]",... 

您可以在文档http://npmjs.com/package/qs#readme

中找到

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