安装mysql : npm i --save egg-sequelize mysql2
配置
// config/plugin.js // 配置mysql插件 sequelize:{ enable:true, package:'egg-sequelize' } //config/default.js // 配置数据库 config.sequelize = { dialect:'mysql', host:'127.0.0.1', //地址 username:'root', //账号 password:'yjx100860', //密码 port:3306, //端口 database:'eggapi', //数据名称 // 中国时区 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 }
安装 sequelize-cli : npm install --save-dev sequelize-cli
在 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'), };
初始化 Migrations 配置文件和目录
npx sequelize init:config npx sequelize init:migrations
执行完后会生成 database/config.json
文件和 database/migrations
目录,我们修改一下 database/config.json
中的内容,将其改成我们项目中使用的数据库配置:
"development": { "username": "root", "password": "yjx100860", "database": "eggapi", "host": "127.0.0.1", "dialect": "mysql", "timezone":"+08:00" },
创建数据库
npx sequelize db:create
-----------开始创建数据表------
创建数据表npx sequelize migration:generate --name=init-users
执行完后会在 database/migrations
目录下生成一个 migration 文件(${timestamp}-init-users.js
),我们修改它来处理初始化 users
表:
'use strict'; /** @type {import('sequelize-cli').Migration} */ module.exports = { async up (queryInterface, Sequelize) { const {INTEGER,STRING,DATE,ENUM} = Sequelize // 创建表名 : users await queryInterface.createTable('users', { id: { type: INTEGER(20).UNSIGNED, primaryKey: true, //主键 autoIncrement: true //自增 }, username: { type:STRING(30), allowNull:false, //不允许为空 defaultValue:'', //默认值为空 comment:'用户名称', //备注用户名 unique:true //唯一性 }, password:{ type:STRING(200), allowNull:false, defaultValue:'', }, avatar_url:{ type:STRING(200), allowNull:false, defaultValue:'', }, sex:{ type:ENUM, values:['男','女','保密'], allowNull:false, defaultValue:'男', comment:'用户性别', }, created_at: DATE, updated_at: DATE, }); }, async down (queryInterface, Sequelize) { // 删除数据表 await queryInterface.dropTable('users'); } };
创建好后,执行代码,数据库的表才会创建
执行 migrate 进行数据库变更
# 升级数据库 npx sequelize db:migrate # 如果有问题需要回滚,可以通过 `db:migrate:undo` 回退一个变更 # npx sequelize db:migrate:undo # 可以通过 `db:migrate:undo:all` 回退到初始状态 # npx sequelize db:migrate:undo:all
以上就创建了数据库且创建了数据表
标签:database,true,egg,数据库,数据表,path,config,sequelize From: https://www.cnblogs.com/qd-lbxx/p/16808307.html