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

以上就创建了数据库且创建了数据表

posted @ 2022-10-20 00:07  杨建鑫  阅读(249)  评论(0编辑  收藏  举报