Как мне вернуть данные из 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
C
CoCoMelon
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
Q
Quasuadre
-
5
-
17
-
10
-
40
-
19
-
4
-
3
-
15
-
17
-
4
-
26
-
12
-
8
-
14
-
4
-
14
-
9
-
10
-
10
-
14
-
4
-
12
-
36
-
8
-
9
-
2
-
10
-
13
-
13
-
3
-
8
-
7
-
1
-
1
-
27
-
8
-
5
-
41
-
1
-
10
-
5
-
43
-
17
-
24
-
19
-
4
-
35
-
6
-
7
-
26