【发布时间】:2021-06-20 13:17:04
【问题描述】:
我正在尝试从数据库中读取数据并将其放入数组中,然后将其发送到 JSON 文件中,当我完成读取数据并开始使用 push 将数组放入 JSON 文件中时,我收到一条错误消息:
无法读取未定义的属性“push”
我在互联网上搜索了这个,人们说这个数组没有初始化,但我的是,这是我的代码:
const sqlite3 = require('sqlite3').verbose();
const fs = require("fs");
dades = [];
// obre la base de dades SQLLite
let db = new sqlite3.Database('EstacioCasa.db', sqlite3.OPEN_READONLY, (err) => {
if (err) {
console.log('-Error in the database connection-');
return console.error(err.message);
}
console.log('-Connected to database-');
});
db.serialize(() => {
db.each(`SELECT cons_w
FROM Consum`, (err, row) => {
if (err) {
console.error(err.message);
}
dades.push(row.cons_w);
console.log(dades);
});
});
setTimeout(function() {
const dadaObj = dades.reduce((map, dada) => {
map.dades.push( { consum: dada} );
return map;
}, { energia: []})
fs.writeFileSync("./energia.json", JSON.stringify(dadaObj, null, 4));
}, 3000);
db.close((err) => {
if (err) {
console.error(err.message);
}
console.log('-Disconnected from database-');
});
当我执行脚本时控制台: Console log
【问题讨论】:
-
我很确定在你的reduce的第一次迭代中,map没有dades,因此map.dades是未初始化的。
标签: javascript node.js arrays asynchronous node-sqlite3