Как мне вернуть данные из fs.createReadStream() с помощью парсера csv

У меня есть эта функция

function getData(file, type) { let data = []; fs.createReadStream(file) .pipe(csv({headers: false, separator: ';',})) .on('data', (row) => { let item = { date: row[0], value: row[1] }; let item2 = { date: moment(row[0], "DD-MM-YYYY HH:mm").add(30, "minutes").format("DD/MM/YYYY HH:mm"), value: row[2] }; data.push(item); data.push(item2); }) .on('end', () => { return data; }); } 

и я хотел бы вернуть 9X_node.js данные, проанализированные в CSV, но когда 9X_nodejs я возвращаю данные в методе .on, данные пусты.

Как 9X_nodejs мне это сделать?

3
0
1
Общее количество ответов: 1

Ответ #1

Ответ на вопрос: Как мне вернуть данные из fs.createReadStream() с помощью парсера csv

Я бы посоветовал использовать подход, основанный 9X_node.js на обещаниях, вы можете вернуть обещание 9X_io.js из функции getData, а затем разрешить или 9X_nodejs отклонить в зависимости от ситуации.

Это 9X_nodejs значительно упрощает работу вызывающей функции.

Например:

function getData(file, type) { let data = []; return new Promise((resolve, reject) => { fs.createReadStream(file) .on('error', error => { reject(error); }) .pipe(csv({headers: false, separator: ';',})) .on('data', (row) => { let item = { date: row[0], value: row[1] }; let item2 = { date: moment(row[0], "DD-MM-YYYY HH:mm").add(30, "minutes").format("DD/MM/YYYY HH:mm"), value: row[2] }; data.push(item); data.push(item2); }) .on('end', () => { resolve(data); }); }); } async function testGetData() { try { const data = await getData("test.csv", {}); console.log("testGetData: parsed CSV data:", data); } catch (error) { console.error("testGetData: An error occurred: ", error.message); } } testGetData(); 

11
0