无法访问对象键值对

时间:2018-10-30 17:19:43

标签: javascript mongodb express mongoose gridfs-stream

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

我跑步时

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 } }

谢谢!

2 个答案:

答案 0 :(得分:2)

... nextNode.previous = previousNode dataToBeDeleted.next = dataToBeDeleted.previous = None if __name__ == '__main__': # Should add this, too. list1 = SinglyLinkedList() list2 = DoublyLinkedList() list2.insertFirst(6) 读取名为object.files[0]的属性的第一项,该属性假定为数组。您的对象不具有此属性,而是具有字符串键filesfiles[0]等。这可能是一个错误,如果没有,则可以将这些道具间接称为files[1]object["files[0]"]object["files[1]"]

答案 1 :(得分:1)

您必须使用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 (根据您的情况)中,您获得了数组键/值,因此您可以通过part['files['+i+']']访问文件。