前言
心血来潮,做一个属于社团的官网,前端选手直接上手Node.js服务端,前后端分离开发。
问题
- 浏览器控制台401
- 后台日志info: <ref *1> Query {...}
状态码 | 状态描述 | 信息说明 |
---|
200 | OK | 请求成功 |
201 | Created | 创建成功 |
400 | Bad Request | 请求参数有误 |
401 | Unauthorized | 未授权访问 |
403 | Forbidden | 访问被禁止 |
404 | Not Found | 资源不存在 |
500 | Internal Server Error | 服务器内部错误 |
思路
- 401是未授权访问,但我填写的账号和密码已经确定是数据库表存在的了,所以是后端出错了
- 根据日志打印,可以定位到adminModel.js文件出错了
- 可答案还是没有出来,我一行一行打印,也还是没测出来,最终是无意间瞟到一眼Promise,我好像在哪里写了..
- 答案已经找到了,就是我最开始用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'); // 换成这个就行