微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

初始化数组时无法读取未定义的属性“推送”

如何解决初始化数组时无法读取未定义的属性“推送”

我正在尝试从数据库中读取数据,将其放入一个数组中,然后将其发送到一个 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

解决方法

它抱怨的原因很可能是您尝试 reducemap.dades.push( { consum: dada} ); 方法中的那个,问题是 map 没有名为 dades 的键。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。