钩子函数onMounted定义了太多访问MySQL的操作 导致数据库异常

先放几种后端遇到的异常,多数和数据库有关

python 复制代码
pymysql.err.InternalError: Packet sequence number wrong - got 102 expected 1
127.0.0.1 - - [09/May/2024 17:49:37] "GET /monitorLastTenList HTTP/1.1" 500 
python 复制代码
AttributeError: 'NoneType' object has no attribute 'read'
127.0.0.1 - - [09/May/2024 17:49:37] "GET /alarmTotal HTTP/1.1" 500 -
python 复制代码
使用pymysql报错err.ProgrammingError: execute() first

异常代码如下:

c 复制代码
onMounted(() => {
  // getList();
  // getPeopleTotal().then(({ data }) =>{
  //   // 更新人数总量
  //   peopleTotal.value = data.total;
  // })
  getPeopleTotal().then(response => {
    // 打印请求返回的数据
    console.log('Total people count:', response.data);
    // 更新人数总量
    peopleTotal.value = response.data.total;
  }).catch(error => {
    console.error('Error fetching total people count:', error);
  });
  getJieKouTotal().then(response => {
    // 打印请求返回的数据
    console.log('Total JieKou count:', response.data);
    // 更新调用接口总量
    jieKouTotal.value = response.data.total;
  }).catch(error => {
    console.error('Error fetching total JieKou count:', error);
  });
  getTimeTotal().then(response => {
    // 打印请求返回的数据
    console.log('Total Time count:', response.data);
    // 更新时间总量
    timeTotal.value = response.data.total;
  }).catch(error => {
    console.error('Error fetching total Time count:', error);
  });
  getAlarmTotal().then(response => {
    // 打印请求返回的数据
    console.log('Total alarm count:', response.data);
    // 更新预警总量
    alarmTotal.value = 100;
  }).catch(error => {
    console.error('Error fetching total alarm count:', error);
  });
  getMonitorLastTenList().then(response => {
    // 打印请求返回的数据
    console.log('Total monitor count:', response.data);
    // 更新监控总量
    monitordataList.value = response.data.dataList;
    // 更新车流量预警统计图表数据
    carFlow.series[0].data = monitordataList.value;
  }).catch(error => {
    console.error('Error fetching total monitor count:', error);
  });
  getClassList().then(response => {
    // 打印请求返回的数据
    console.log('Total class count:', response.data);
    // 更新监控总量
    carCount.value = response.data.dataList[0];
    busCount.value = response.data.dataList[1];
    vanCount.value = response.data.dataList[2];
    // 更新饼状图数据
    pieChartData = [
      { value: carCount.value, name: '小汽车' },
      { value: vanCount.value, name: '厢式货车' },
      { value: busCount.value, name: '公交车' },
    ];
    category.series[0].data = pieChartData

  }).catch(error => {
    console.error('Error fetching total class count:', error);
  });
})

修改毕设vue代码,很多知识已经忘掉了,全程和gpt一起找bug,最后也没问出来什么,分析了一下应该是同时访问数据库次数太多了,让gpt帮忙修改了一下。

我:怎么让这几个函数一个一个的执行,否则会经常数据库异常

gpt: 你可以使用 JavaScript 中的 Promise 链来确保这些函数按顺序执行,并在前一个函数执行成功后再执行下一个函数。下面是一个示例代码,展示了如何使用 Promise 链来实现:

c 复制代码
onMounted(() => {
  getPeopleTotal()
    .then(response => {
      console.log('Total people count:', response.data);
      peopleTotal.value = response.data.total;
      return getJieKouTotal(); // 返回一个 Promise 对象,使得下一个函数能够等待当前函数执行完毕后再执行
    })
    .then(response => {
      console.log('Total JieKou count:', response.data);
      jieKouTotal.value = response.data.total;
      return getTimeTotal();
    })
    .then(response => {
      console.log('Total Time count:', response.data);
      timeTotal.value = response.data.total;
      return getAlarmTotal();
    })
    .then(response => {
      console.log('Total alarm count:', response.data);
      alarmTotal.value = 100;
      return getMonitorLastTenList();
    })
    .then(response => {
      console.log('Total monitor count:', response.data);
      monitordataList.value = response.data.dataList;
      carFlow.series[0].data = monitordataList.value;
      return getClassList();
    })
    .then(response => {
      console.log('Total class count:', response.data);
      carCount.value = response.data.dataList[0];
      busCount.value = response.data.dataList[1];
      vanCount.value = response.data.dataList[2];
      pieChartData = [
        { value: carCount.value, name: '小汽车' },
        { value: vanCount.value, name: '厢式货车' },
        { value: busCount.value, name: '公交车' },
      ];
      category.series[0].data = pieChartData;
    })
    .catch(error => {
      console.error('Error fetching data:', error);
    });
});

完美解决!

相关推荐
泡干脆面就番茄2 小时前
MySQL_子查询_分页查询与联合查询详解
数据库·mysql
devpotato3 小时前
缓存与数据库更新顺序不一致问题
java·数据库·redis
天若有情6733 小时前
Node+MySQL小型全栈笔记项目实战课程分享
数据库·笔记·mysql
wxwx_bscxy3223 小时前
基于springboot宠物领养系统的设计与实现
数据库·spring boot·后端·spring·宠物
九月要晚安4 小时前
达梦DW与AFC对比
数据库
实战派K8S&DB4 小时前
如何在内网配置 TiDB 数据库 Agent
数据库·人工智能·分布式·tidb
实战派K8S&DB4 小时前
《基于 Dify + FastAPI + PyTiDB 搭建大模型驱动的 TiDB 智能运维 Agent》
运维·数据库·分布式·云原生·tidb·fastapi
SelectDB4 小时前
Apache Doris 5.0 年度版本前瞻(一):构建统一的多模湖仓实时分析平台
大数据·数据库·数据分析
小白学大数据5 小时前
超简单:用 Python 让 Excel 飞起来:用 openpyxl 把重复报表整理交给脚本
开发语言·数据库·python·excel
西索斯coding5 小时前
doubao-seed-2.1-turbo 调用一直 401 怎么办?pro 版同样的 Key 却正常——5 分钟排查定位指南
java·服务器·数据库·ai