无法访问对象键值对

Can not access objects key value pairs

我正在通过 FormData 将图像从我的 VueJS 前端发送到我的 Express 服务器,以将它们存储在带有 gridfs-stream 和 mongoose 的 Mongo 数据库中。图像对象到达服务器,但我不知道如何访问它的键值对。

当我运行

let part = req.files
for (const prop in part) {
   console.log('part.${prop} = ${part[prop]}')
}

我得到了这个输出:

part.files[0] = [object Object]
part.files[1] = [object Object]

但是当我尝试访问 part.files[0] 时出现了这个错误:

TypeError: Cannot read property '0' of undefined

对象的结构如下:

{ 'files[0]':
 { data: <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 01 00 48 00 48 00 00 ff db 00 43 00 08 06 06 07 06 05 08 07 07 07 09 09 08 0a 0c 14 0d 0c 0b 0b 0c 19 12 13 0f ... >,
 name: 'e0ZnCwP.jpg',
 encoding: '7bit',
 mimetype: 'image/jpeg',
 truncated: false,
 size: 259454 },
'files[1]':
 { data: <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 48 00 48 00 00 ff c0 00 11 08 06 40 04 c8 03 01 22 00 02 11 01 03 11 01 ff c4 00 1f 00 00 01 05 01 01 01 ... >,
 name: 'Me.jpeg',
 encoding: '7bit',
 mimetype: 'image/jpeg',
 truncated: false,
 size: 108021 } }

提前致谢!

object.files[0] 读取名为 files 的 属性 的第一项,假设它是一个数组。你的对象没有这个属性,有字符串键files[0]files[1]等。这可能是一个错误,如果不是,你可以间接引用这些道具作为object["files[0]"]object["files[1]"]object["files[" + index + "]"]

你有 JSON 的牵引类型: #1

var part = {
files : { 
    { 
        data: <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 01 00 48 00 48 00 00 ff db 00 43 00 08 06 06 07 06 05 08 07 07 07 09 09 08 0a 0c 14 0d 0c 0b 0b 0c 19 12 13 0f ... >,
         name: 'e0ZnCwP.jpg',
         encoding: '7bit',
         mimetype: 'image/jpeg',
         truncated: false,
         size: 259454 
    }, { 
        data: <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 48 00 48 00 00 ff c0 00 11 08 06 40 04 c8 03 01 22 00 02 11 01 03 11 01 ff c4 00 1f 00 00 01 05 01 01 01 ... >,
         name: 'Me.jpeg',
         encoding: '7bit',
         mimetype: 'image/jpeg',
         truncated: false,
         size: 108021 
    } 
}

或者你得到的那个: #2

var part = { 
    'files[0]': { 
    data: <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 01 00 48 00 48 00 00 ff db 00 43 00 08 06 06 07 06 05 08 07 07 07 09 09 08 0a 0c 14 0d 0c 0b 0b 0c 19 12 13 0f ... >,
     name: 'e0ZnCwP.jpg',
     encoding: '7bit',
     mimetype: 'image/jpeg',
     truncated: false,
     size: 259454 
}, 
'files[1]': { 
    data: <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 48 00 48 00 00 ff c0 00 11 08 06 40 04 c8 03 01 22 00 02 11 01 03 11 01 ff c4 00 1f 00 00 01 05 01 01 01 ... >,
     name: 'Me.jpeg',
     encoding: '7bit',
     mimetype: 'image/jpeg',
     truncated: false,
     size: 108021 
} 

它们之间的区别在于 #1 files 变量是一个数组,因此您可以像这样访问它们:part.files[i]。 但是在 #2 (你的情况)中你得到了数组 key/values 所以你可以通过 part['files['+i+']'].

访问你的文件