Как получить доступ к определенным свойствам в JSON или Object в JavaScript - PullRequest
0 голосов
/ 06 января 2019

Я делаю приложение в Nodejs с использованием модулей express и node-xlsx, и я хочу, чтобы пользователь мог загрузить файл xlsx (который должен иметь определенный формат из двух столбцов), а затем сервер читает его и что-то делает с каждой строкой файла.

(Пример моего тестового файла, соответственно столбцы A и B):

    Johny Wilson    | jonhny@email.com
    Andrew Jehnsen  | andrew@example.com
    Billy Soon      | billy@mail.com

Для этого я решил использовать модуль node-xlsx, который после прочтения файла с этим кодом:

    var xlsx = require('node-xlsx');

    router.post('/enviar', upload.single("lista"),(req, res, next) =>{
        //dir is the path of the xlsx file
        const workSheetsFromFile = xlsx.parse(dir); 
        res.send(workSheetsFromFile);
    });

возвращает объект, который выглядит следующим образом:

    [
        {
            "name": "Hoja1",
            "data": [
                [
                    "Johny Wilson",
                    "jonhny@email.com"
                ],
                [
                    "Andrew Jehnsen",
                    "andrew@example.com"
                ],
                [
                    "Billy Soon",
                    "billy@mail.com"
                ]
            ]
        }
    ]

Как видите, модуль возвращает данные всего файла, включая данные листа (в данном случае только один), я хочу получить доступ только к массиву «data», который содержит ключи и значения для их обработки.

Я уже пытался зациклить массив данных с помощью:

    workSheetsFromFile.data.forEach((element) =>{
        console.log(element);
    });

и

    workSheetsFromFile[data].forEach((element) =>{
        console.log(element);
    });

и

    workSheetsFromFile['data'].forEach((element) =>{
        console.log(element);
    });

но все они просто отправляют мне сообщение об ошибке типа «Невозможно прочитать свойство forEach of undefined» или «данные не определены»: (

Пока что с этими несколькими строками кода я собирался перебрать массив данных и напечатать каждую пару ключей и значений, поэтому, как только это будет исправлено, внутри этого цикла обрабатывают каждый ключ и значение для отправки автоматических писем.

Ответы [ 3 ]

0 голосов
/ 07 января 2019
const structuredData = workSheetsFromFile[0].data.map(res => {
     return res
});
0 голосов
/ 07 января 2019
workSheetsFromFile.forEach(sheet => {
   //access data
   console.log(sheet.data)

   //or

   sheet.data.forEach(data => {
   //access each data
   console.log(data)
   })
})
0 голосов
/ 06 января 2019

То, что у вас есть, похоже, массив объектов, а не сам объект!

попробовать

 workSheetsFromFile[0].data.forEach((element) => {
     console.log(element);
 });

Если у вас есть больше элементов, попробуйте сначала зациклить массив, а затем извлечь данные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...