首页 > 解决方案 > Vue.Js 错误消息无法将属性“personasD”设置为 null

问题描述

我从 firebase 获取数据,但是当我尝试将数据设置为本地 var 时,我收到以下错误消息“未捕获的 TypeError:无法设置属性 'personasD' of null”你能指导我做什么吗?错了?...我想我没有初始化数据,但我不知道这是怎么回事..

export default {
  name: 'CChartPieExample',
  components: { CChartPie, CChartPie },
  data: () => {
    return{
      de: null,
      ye: null,
      mo: null,
      da: null,
      datos: null,
      losRios: 0,
      devueltos: 0,
      otra:0,
      total: 0,
      totalP: 0,
      personasLR: 0,
      personasO:0,
      personasD: 0,
      losRiosHoy: 0,
      otrosHoy: 0,
      devuetosHoy: 0,
      totalHoy: 0,
      perLRHoy: 0,
      perOtHoy:0,
      perDevHoy:0,
      perTotHoy:0
    }
  },
  created(){
    this.obtenerData();
  },

  methods: {
    obtenerData(){
      this.de = new Date()
      this.ye = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(this.de)
      this.mo = new Intl.DateTimeFormat('en', { month: 'short' }).format(this.de)
      this.da = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(this.de)
      var currentDate = new Date();
      currentDate.setHours(0,0,0,0);
      let totalPer = 0;
      let persLR = 0;
      let persLRH = 0;
      let totalPerH = 0;
      let locLosrios = 0;
      let locPerLR = 0;
      let locLRhoy = 0;
      let locPerLRhoy = 0;
      let locdev = 0;
      let locDevHoy = 0;
      let perDevHoy = 0;
      let locTotaHoy = 0;
      let locPerTotHoy = 0;
      let locTotal = 0;
      let perD = 0;


      db.ref('control').on('value', function (snapshot) {
            var objeto = snapshot.val();
            for (var propiedad in objeto) {
                
                //this.datos = objeto[propiedad]
                //this.datos.id = doc.id
                console.log(objeto[propiedad].destino)
                var fechaEntrada = objeto[propiedad].horaEntrada
                let myDate = new Date(fechaEntrada.seconds * 1000)
                myDate.setHours(0,0,0,0);
                var persBD = 0;
                const parsed = Number.parseInt(objeto[propiedad].personas);
                if (Number.isNaN(parsed)) {
                  persBD = 0;
                }else{
                  persBD = parsed;
                }

                if(objeto[propiedad].destino == 'XIV Región de Los Ríos'){
                  locLosrios = locLosrios+1;
                  locPerLR = locPerLR + persBD;
                  persLR = persLR + persBD;

                  if(myDate.valueOf() == currentDate.valueOf()){
                    locLRhoy = locLRhoy+1,
                    locPerLRhoy = locPerLRhoy + persBD;
                    persLRH = persLRH + persBD;
                  }
                }
                if(objeto[propiedad].ingreso == 'Es Devuelto'){
                  locdev = locdev + 1;
                  perD = perD + persBD;
                  console.log(perD);
                  if(myDate.valueOf() == currentDate.valueOf()){
                    locDevHoy= locDevHoy+1
                    perDevHoy = perDevHoy + persBD
                  }
                }
                if(myDate.valueOf() == currentDate.valueOf()){
                    console.log('mismafecha');
                    totalPerH = totalPerH + persBD;
                    locTotaHoy = locTotaHoy+1;
                    locPerTotHoy = locPerTotHoy + persBD;
                  }

                locTotal = locTotal+1;
                totalPer = totalPer + persBD
                          
                //console.log(objeto[propiedad].patente)
                            
            }

            this.personasD = perD;
            this.losRios = locLosrios;
            this.personasLR = locPerLR;
            this.losRiosHoy = locLRhoy;
            this.perLRHoy= locPerLRhoy;
            this.devueltos = locdev;
            this.devuetosHoy = locDevHoy;
            this.perDevHoy = perDevHoy;
            this.totalHoy = locTotaHoy;
            this.perTotHoy = locPerTotHoy;
            this.total = locTotal;
            this.totalP =  totalPer;

            this.otra = locTotal-locLosrios;
            this.personasO = totalPer - persLR;
            console.log(totalPerH + " " + persLRH);
            this.otrosHoy = locTotaHoy - locLRhoy
            this.perOtHoy = totalPerH - persLRH;
            console.log(this.total + " " + this.totalHoy);
        });

      // this.getCount(objeto[propiedad])
    },
  },

标签: vue.jsfirebase-realtime-database

解决方案


推荐阅读