首页 > 解决方案 > 无法读取未定义的属性“提交”

问题描述

我正在尝试对来自多个 mqtt 主题的数据进行平均,并且在标题中出现错误,我很确定错误来自 calcavgGPSdata,但不知道为什么会抛出错误。carpath[] 也最终是空的。

    const store = new Vuex.Store({
  state: {
    dashChartVal: {}, // temporary cache for chart data
    triggerCharts: 0, // updated to trigger real time updates while on dashboard
    prevPayload: [], // stores the last valid payload recieved, used for mapping
    triggerMap: 0,
    // array used to select data types and charts
    selected: [
      {
       //values
      },

    ],

    carPath: [],
    sensorLatData: [],
    sensorLongData: [],
    sumLat: 0,
    sumLong: 0,
    avgLat: 0,
    avgLong: 0,
  },
  mutations: {
        increaseMapTrigger: function (state) {
      state.triggerMap++;
    },
    pushValue: function (state, data) {
      if (!state.dashChartVal[data.name]) {
        state.dashChartVal[data.name] = [];
      }

      state.dashChartVal[data.name].push({
        name: data.name,
        value: data.value,
      });
    },
    shiftPoints: function (state, dataType) {
      store.state.dashChartVal[dataType].shift();
    },
    storeSelected: function (state, data) {
      state.selected = data;
    },
    calcAvgGPSData: function (data) {

      //latitude data
      store.state.sumLat = store.state.sensorLatData.reduce((a, b) => a + b, 0);
      store.state.avgLat = store.state.sumLat / (store.state.sensorLatData.length - 1);     

      //longitude data
      store.state.sumLong = store.state.sensorLongData.reduce((a, b) => a + b, 0);
      store.state.avgLong = store.state.sumLong / (store.state.sensorLongData.length - 1);
      console.log(
        "Avg LAT:",
        store.state.avgLat.toFixed(8),
        ", Avg LNG",
        store.state.avgLong.toFixed(8)
      );
      // update array for latitude and longitude
            this.$store.commit("addPointPath", {
              pmThresh: this.$store.state.prevPayload
                ? this.$store.state.prevPayload
                : 0,
              payload: data,
            });
      
  

    },
    addPointPath: function (state, data) {
      state.carPath.push({
        pmThresh: data.pmThresh,
        coord: [
          this.$store.state.avgLat,
          this.$store.state.avgLong,
        ],
      });
    },
  },

这是从 mqtt 主题收集数据并进行处理的代码

  mqtt: {
    "xxxx"(payload) {
      if (payload != null) {
        try {
          if (JSON.parse(payload.toString())) {
            payload = JSON.parse(payload.toString());
          }
        } catch (error) {
          // handle NaN errors
          payload = JSON.parse(payload.toString().replace(/NaN/g, '"NaN"'));
        }

        //negative values
        }
      }
    },

    "xxxx"(payload) {
      if (payload != null) {
        try {
          if (JSON.parse(payload.toString())) {
            payload = JSON.parse(payload.toString());

            
            this.$store.state.sensorLatData.push(
                            payload.latitudeCoordinate
            );
            this.$store.state.sensorLongData.push(
                            payload.longCoordinate
            );
            console.log(
              "LAT gga1:",
              payload.latitudeCoordinate.toFixed(8),
              ", LNG gga1:",
              payload.longitudeCoordinate.toFixed(8)
            );
            this.$store.commit("increaseMapTrigger");
          }
        } catch (error) {
          alert(error, "=>", payload.toString());
          // handle NaN errors
          payload = JSON.parse(payload.toString().replace(/NaN/g, '"NaN"'));
        }
      }
    },

    "xxxx"(payload) {
      if (payload != null) {
        try {
          if (JSON.parse(payload.toString())) {
            payload = JSON.parse(payload.toString());

            this.$store.state.sensorLatData.push(
                            payload.latitudeCoordinate
            );
            this.$store.state.sensorLongData.push(
                            payload.longCoordinate
            );
              
            console.log(
              "LAT gga2:",
              payload.latitudeCoordinate.toFixed(8),
              ", LNG gga2:",
              payload.longitudeCoordinate.toFixed(8)
            );
            this.$store.commit("increaseMapTrigger");
          }
        } catch (error) {
          alert(error, "=>", payload.toString());
          // handle NaN errors
          payload = JSON.parse(payload.toString().replace(/NaN/g, '"NaN"'));
        }
      }
    },

    "xxxx"(payload) {
      if (payload != null) {
        try {
          if (JSON.parse(payload.toString())) {
            payload = JSON.parse(payload.toString());

            this.$store.state.sensorLatData.push(
                            payload.latitudeCoordinate
            );
            this.$store.state.sensorLongData.push(
                            payload.longCoordinate
            );        
            console.log(
              "LAT gga3:",
              payload.latitudeCoordinate.toFixed(8),
              ", LNG gga3:",
              payload.longitudeCoordinate.toFixed(8)
            );
            this.$store.commit("increaseMapTrigger");
          }
        } catch (error) {
          alert(error, "=>", payload.toString());
          // handle NaN errors
          payload = JSON.parse(payload.toString().replace(/NaN/g, '"NaN"'));
        }
      }
      this.$store.commit("calcAvgGPSData");
    },   
    
  },

标签: javascriptvue.jsvuexmqtt

解决方案


推荐阅读