探索Node.js和MySQL的强大组合(二):实战遇到的问题及解决思路

前言

心血来潮,做一个属于社团的官网,前端选手直接上手Node.js服务端,前后端分离开发。

问题

  1. 浏览器控制台401
  2. 后台日志info: <ref *1> Query {...}


状态码 状态描述 信息说明
200 OK 请求成功
201 Created 创建成功
400 Bad Request 请求参数有误
401 Unauthorized 未授权访问
403 Forbidden 访问被禁止
404 Not Found 资源不存在
500 Internal Server Error 服务器内部错误

 思路

  1. 401是未授权访问,但我填写的账号和密码已经确定是数据库表存在的了,所以是后端出错了
  2. 根据日志打印,可以定位到adminModel.js文件出错了

  • 可答案还是没有出来,我一行一行打印,也还是没测出来,最终是无意间瞟到一眼Promise,我好像在哪里写了..

  • webstorm有类型提示真好,也一般般,比如

  •  答案已经找到了,就是我最开始用yarn引入的Mysql包没有支持Promise
包名 描述
mysql mysql 是 Node.js 中使用最广泛的 MySQL 数据库驱动程序之一。它提供了与 MySQL 数据库的连接、查询和数据操作等功能,并支持回调函数和流式查询。但是,该包不直接支持 Promise。
mysql2 mysql2 包是 mysql 的替代品,具有更好的性能和额外的功能。除了提供与 MySQL 数据库的连接、查询和数据操作等功能外,它还内置了对 Promise 的支持,使得可以使用async/await 进行异步查询操作。
mysql2/promise mysql2/Promise 实际上是对 mysql2 包的进一步封装,专门用于提供对 Promise 的支持。它使得可以使用 Promise 链式语法来执行异步查询,并更方便地处理数据库操作。
// db.js
const mysql = require('mysql2/promise'); // 换成这个就行
  • 再优化一下代码结构