egg_创建数据库和数据表
安装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
以上就创建了数据库且创建了数据表
本文来自博客园,作者:杨建鑫,转载请注明原文链接:https://www.cnblogs.com/qd-lbxx/p/16808307.html