node+koa+mysql(二)

218 阅读3分钟

上文 介绍了 Koa 的基本使用,本文开始介绍数据库的连接。

MySQL

基本概念

数据库按照数据结构分类可以分为以下两类:

1、关系型数据库(RDBMS):使用表格形式存储数据,数据之间有明确的关系,例如:MySQL、Oracle、SQL Server、PostgreSQL 等。
2、非关系型数据库(NoSQL):不使用表格形式存储数据,而是使用键值对、文档、列式存储或图形结构等,例如:Redis、MongoDB、Cassandra、Neo4j 等。

本文使用的数据库是 MySQL,采用 Sequelize 库来操作数据库。 Sequelize 是一个基于 JavaScriptORM(对象关系映射)库,用于在 Node.js 环境中与数据库进行交互。ORM(对象关系映射)是一种编程技术,通过将对象和数据库之间建立映射关系,以更直观的方式进行数据库操作。 Sequelize 通过将数据库记录映射为模型对象,使得开发人员可以使用 JavaScript 对象的方法和属性来进行数据库的增删改查操作,而不需要编写复杂的 SQL 查询语句。

MySQL 连接

数据库下载

原本是直接下载的MySQL,使用 Navicate 可以连接成功,但是 Sequelize 却连接不上,配置的域名是 localhost,连接时候报错说 127.0.0.1:3306 拒绝连接或者超时,按照网上的各种解决方案试了都没法连接成功,不知道是不是哪里的配置有问题,有木有哪位小伙伴遇到过 T^T,最后就卸载了 MySQL ,下载了 XAMPP

XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包。直接官网下载,按照默认设置安装即可。MySQL使用的端口是 3306,如果本地已经有应用占用了该端口的话就需要修改下端口,可参考XAMPP 最详细的安装及使用教程(图文)。运行起来后,发现 phpMyAdmin 连接不上数据库,需要修改下 phpMyAdmin 的配置文件,填上你的数据库密码和端口,具体可以参考在已安装 mysql 的基础上安装 xampp,打开 phpadmin 报错

数据库连接

1、打开 phpMyAdmin ,创建一个新的数据库,库名为 book

2、安装 Sequelize

npm install sequelize

3、我们要连接的数据库是 MySQL,所以还需要安装下 MySQL 的驱动 mysql2

npm install mysql2

4、创建数据库连接

先在项目根目录下创建文件 /config/config.js,保存数据库的基本信息:

module.exports = {
    database: {
        dbName: "book", // 数据库名称
        host: "localhost", // 数据库域名
        port: "3306", // 数据库端口
        user: "root", // 数据库连接用户名
        password: "123456", // 数据库连接用户密码
    },
}

然后再创建文件 /core/db.js,用来创建数据库连接:

const { Sequelize } = require("sequelize");
const { dbName, host, port, user, password } = require("../config/config").database;

const sequelize = new Sequelize(dbName, user, password, {
  dialect: "mysql",
  host,
  port,
  logging: true,
  timezone: "+08:00", // sequelize设置的时间要加上8小时才等于北京时间
  define: {
    timestamps: true, // 是否自动生成createdAt	updatedAt 字段
    paranoid: true, // 该字段设置为true,会生成deletedAt字段
    underscored: true, // 将驼峰统一转化为下划线
  },
});

// 是否强制删除表,只能在开发环境下设置为true,在你的数据库已经有数据的情况下,设置为true,重新运行代码的时候会强制性的删除原有的表重新生成新的,数据都会丢失
sequelize.sync({
  force: false, 
});

module.exports = {
  sequelize,
};

数据库准备完毕,下一篇 我们定义数据表结构~

参考文章

1、Sequelize 中文文档