Express-学习之路 10,api接口 - 连接 mysql 数据库

645 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情

Express-学习之路 10,api接口 - 连接 mysql 数据库

引言

本系列会以我的一个理解,来介绍并开始学习 Express

中间会插入自己所联系到的 乱七八糟 的 知识点

数据库操作

数据库

  • 查看所有的数据库

    show databases;
    
  • 创建数据库 (xxx 数据库名称)

    create database xxx;
    create database if not exists xxx;
    
  • 删除数据库

    drop database xxx;
    drop database if exists xxx;
    
  • 使用数据库

    use xxx;
    
  • 查看当前是哪个数据库

    select database();
    

  • 查询当前数据库所有表

    show tables;
    
  • 创建表 (xxx 表名,yyy 字段名 类型 等,zzz 注释)

    create table xxx(yyy) comment zzz;
    
  • 查询表结构 (xxx 表名) --> 简单的结构

    desc xxx;
    
  • 查询指定表的建表语句 --> 详细的结构

    show create table xxx;
    

Express 连接数据库

首先我们需要创建一个名 exapi 的数据库

create database exapi;

通过 Navicat 工具进行连接,并且在 exapi 数据库内部创建一个用户 user

image.png

都已准备完全,我们开始 Expressmysql 进行连接。

  • 首先在项目中安装 mysql

    npm i mysql
    
  • model 目录下,创建 index.js 文件,进行连接。

    - model/       对数据进行的操作
      -- index.js 
    
  • index.js 中进行 mysql 数据库连接的配置操作

    这里暴露出去 sqlConnect 方法,之后在 controller 控制器 目录下的相关文件进行进行引入调用即可。

    const mysql = require('mysql')
    
    const config = {
      connectionLimit: 10, // 连接池的大小
      host: 'localhost', // 主机
      user: 'root',
      password: '123456',
      database: 'exapi'
    }
    
    const sqlConnect = (sql, sqlArr, callback) => {
      // 创建连接池
      const poll = mysql.createPool(config)
    
      // 获得一个连接
      poll.getConnection((err, connection) => {
        if (err) throw err
    
        // 查询
        connection.query(sql, sqlArr, callback)
    
        // 释放
        connection.release()
      })
    }
    
    module.exports = sqlConnect
    
  • controller/user/index.js 文件下,引入,并编写 sql 语句

    image.png

处理连接报错

此时页面代码处理完成,我们访问 http://localhost:8089/api/user

如果报下面这个错误的话

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

image.png

说明 Node 不支持当前 mysql 版本加密方式。具体原因

解决方案:打开命令行,输入下面,来验证账户密码。

mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

此时再次执行 node app.js 即可。

image.png

可以看到我们的数据连接已经成功了。

但是里面还没有任何数据,我们这里可以尝试手动先添加数据。

image.png

image.png

可以看到成功的返回了数据。

总结

学习了数据库的操作,以及 Express 连接 mysql 数据库。处理了连接数据库报错问题。