05 egg.js之数据库迁移
作者:互联网
一、软件下载安装
可使用upupw ank软件,作为服务器,用于数据库存储,下载网址
选择对应的版本下载
二、项目配置
使用sequelize框架来访问数据库,教程可见egg-js官网
1、初始化项目
mkdir sequelize-project && cd sequelize-project npm init egg --type=simple npm i
2、安装并配置 egg-sequelize 插件和 mysql2 模块
npm install --save egg-sequelize mysql2
3、在config/plugin.js中引入egg-sequelize插件
exports.sequelize = { enable: true, package: 'egg-sequelize', };
4、在 config/config.default.js 中编写 sequelize 配置(参数设置为自己的)
config.sequelize = { dialect: 'mysql', host: '127.0.0.1', username: 'root', password: 'root', port: 3306, database: 'egg-db', timezone: '+08:00', define: { //取消数据表名复数 freezeTableName: true, //自动写入时间戳created_at updated_at timestamps: true, //字段生成软删除时间戳 deleted_at paranoid: true, createdAt: 'created_at', updatedAt: 'updated_at', deletedAt: 'deleted_at', //所有驼峰命名格式化 underscored: true } };
5、sequelize提供了sequelize-cli工具来实现Migrations,我们也可以在egg项目中sequelize-cli
npm install --save-dev sequelize-cli
6、egg项目中,我们希望将所有的数据库migrations相关的内容都放在database目录下,所以我们在项目根目录下新建一个.sequelizerc配置文件:
'use strict'; const path = require('path'); module.exports = { config: path.join(__dirname, 'database/config.json'), 'migrations-path': path.join(__dirname, 'database/migrations'), 'seeders-path': path.join(__dirname, 'database/seeders'), 'models-path': path.join(__dirname, 'app/model'), };
7、初始化Migrations配置文件和目录
npx sequelize init:config npx sequelize init:migrations
8、执行完后会生成 database/config.json 文件和 database/migrations 目录,我们修改一下 database/config.json 中的内容,将其改成我们项目中使用的数据库配置:
{ "development": { "username": "root", "password": "root", "database": "egg-db", "host": "127.0.0.1", "dialect": "mysql" }, "test": { "username": "root", "password": null, "database": "egg-sequelize-doc-unittest", "host": "127.0.0.1", "dialect": "mysql" } }
3、创建数据库和表
1、创建数据库
npx sequelize db:create
2、此时 sequelize-cli 和相关的配置也都初始化好了,我们可以开始编写项目的第一个 Migration 文件来创建我们的一个 users 表了。
npx sequelize migration:generate --name=init-users
3、执行完后会在 database/migrations 目录下生成一个 migration 文件(${timestamp}-init-users.js),我们修改它来处理初始化 users 表:
'use strict'; module.exports = { // 在执行数据库升级时调用的函数,创建 users 表 up: async (queryInterface, Sequelize) => { const { INTEGER, DATE, STRING } = Sequelize; await queryInterface.createTable('users', { id: { type: INTEGER, primaryKey: true, autoIncrement: true }, name: STRING(30), age: INTEGER, created_at: DATE, updated_at: DATE, }); }, // 在执行数据库降级时调用的函数,删除 users 表 down: async queryInterface => { await queryInterface.dropTable('users'); }, };
4、执行 migrate 进行数据库变更
# 升级数据库 npx sequelize db:migrate # 如果有问题需要回滚,可以通过 `db:migrate:undo` 回退一个变更 # npx sequelize db:migrate:undo # 可以通过 `db:migrate:undo:all` 回退到初始状态 # npx sequelize db:migrate:undo:all
5、效果:成功生成users表
标签:users,05,egg,database,js,path,config,sequelize 来源: https://blog.csdn.net/mengdeng19950715/article/details/115254461