Проблема
У меня проблема с выбором Value
в объекте, который находится внутри Array
со свойствами, которые можно найти с помощью .getOwnPropertyName()
и Object.keys()
Однако вместо значения я получаю undefined
. С тех пор я работал над этим, но это уму непостижимо, и я хотел бы понять, почему это происходит.
Поскольку я нигде не смог найти ответ на проблему, я надеюсь, что этот вопрос также поможет всем, кто сталкивается с этой проблемой
Stack:
- Env:Node.js,
npm
- Модули:
fs
, csv-parser
Описание
- Загрузка данных из файла CSV с использованием читаемого потокас помощью
csv-parser
и получения массива объектов. - Затем я хочу выбрать значение в объекте (одна пара ключ-значение) для замены значения в другом объекте.
- Но это на самом деле не имеет значения, поскольку проблема становится заметной сразу после присвоения этого массива имени переменной и даже внутри обещания.
- Я пытался сохранить этот ключимя в другой переменной:
- Использование одинарных кавычек / двойных кавычек
- Использование литерала с одинарными кавычками (
"'keyname'"
) - Использование выбора точки, выбора таблицы иничего не будет работать.
- Затем я попытался console.log:
- Object.keys () и my_object.getOwnPropertyNames () оба возвращают это точное имя ключа
- регистрация
my_array
возвращает массив объектов - регистрация
my_array[0]
возвращает один объект typeof(my_object)
возвращает объект typeof(my_array)
возвращает объект, но console.dir(my_array)
возврат Array (1000) [Object, Object, Object, ...]
console.dir(my_array[0])
is Object {user: "D0568824B5F1D96E"}
НО
my_object.hasOwnProperty(my_key)
возвращает false
Таким образом, я в конечном итоге решил эту проблему, выбрав с помощью
my_array[0][(Object.keys(my_array[0]))[0]]
Но это выглядит действительно нечистым и ненужным ... Я думал, что это может быть связано с кодировкой CSV-файла, но после проверки UTF-8
.
Я также попытался изменитьимя свойства.
- Кроме того, точно такой же код смог создать массив с читаемыми объектами. Разница между файлами заключается в том, что у нерабочего csv есть объекты с одним свойством, а у другого - несколько объектов.
- Может ли это быть проблемой? Данные CSV представляют собой список шестнадцатеричных идентификаторов пользователей.
Код:
const parseCSV = require('csv-parser');
const fs = require('fs');
let array = [];
const readFromCSV = async (sourceFile) => {
return new Promise(resolve => {
fs.createReadStream(sourceFile)
.pipe(parseCSV())
.on('data', row => {
array.push(row);
})
.on('end', () => {
console.log('Data ingested'); //console.log of array[0].keyname results in the issue at this point but also outside the function, after resolving the promise and assigning it to a variable name
resolve(array);
});
});
};