egg.js使用sequelize mysql

8 篇文章 0 订阅

安装CLI

$ npm install --save egg-sequelize mysql2

在config/plugin.js中引用egg-sequelize

export.sequelize = {
	enable:true,
	package:'egg-sequelize'
}

在config/config.default.js中编写sequelize配置

config.sequelize = {
	dialect:'mysql',
	host:'127.0.0.1',
	port:'3306',
	database:'egg_sequelize_doc_default'
}

初始化数据库和Migrations

  1. 初始化数据库
    我们平时一个人练习的时候,大部分数据库初始化的时候采用的是sql语句创建,或是用一些图形界面工具。但是这并不是一个对多人协作非常友好的开发模式,在项目的演进过程中,每一个迭代都有可能对数据库数据结构做变更,怎样跟踪每一个迭代的数据变更,并在不同的环境(开发、测试、CI)和迭代切换中,快速变更数据结构呢?这时候我们就需要 Migrations 来帮我们管理数据结构的变更了。
  2. Migrations:
    就像使用Git / SVN管理源代码中的更改一样,您可以使用迁移来跟踪对数据库的更改。通过迁移,您可以将现有数据库转移到另一个状态,反之亦然:这些状态转换保存在迁移文件中,这些文件描述了如何进入新状态以及如何恢复更改以恢复到旧状态。您将需要Sequelize CLI。CLI提供对迁移和项目引导的支持。

如何使用Migrations

  1. 安装sequelize-cli
    sequelize 提供了 sequelize-cli 工具来实现Migrations,我们可以在egg项目中引入sequelize-cli
npm install --save-dev sequelize-cli
  1. 根目录创建.sequelizerc文件
    这是一个特殊的配置文件,它允许您指定通常作为参数传递给CLI的各种选项,您可以使用它的一些场景。比如你不想使用默认的路径migrations,models,seeders或config文件夹。
const path = require('path');

module.exports = {
 'config': path.resolve('config', 'database.json'),
 'models-path': path.resolve('db', 'models'),
 'seeders-path': path.resolve('db', 'seeders'),
 'migrations-path': path.resolve('db', 'migrations')
}
/*
使用此配置,您将告诉CLI

使用config/database.json文件进行配置设置
使用db/models的模型文件夹
使用db/seeders如播种机文件夹
使用db/migrations作为迁移文件夹
*/
  1. 初始化Migrations配置文件和目录
npx sequelize init:config
npx sequelize init:migrations

执行完之后回生成database/config.json文件和database/migrations目录,我们修改一下database/config.json中的内容,将其改成我们项目中使用的数据库配置

{
  "mark":"包含配置文件,告诉CLI如何连接数据库",

  "development": {
    "username": "root",
    "password": "Cc1223..",
    "database": "egg_sequelize_doc_default",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },
  "test": {
    "username": "root",
    "password": null,
    "database": "database_test",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },
  "production": {
    "username": "root",
    "password": null,
    "database": "database_production",
    "host": "127.0.0.1",
    "dialect": "mysql"
  }
}

  1. 配置我们已经完成了,可以创建表了
    创建第一个Migration文件
    npx sequelize migration:generate --name=init-users
    

执行完后会在 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');
  },
};
  1. 创建表
# 升级数据库
npx sequelize db:migrate
# 如果有问题需要回滚,可以通过 `db:migrate:undo` 回退一个变更
# npx sequelize db:migrate:undo
# 可以通过 `db:migrate:undo:all` 回退到初始状态
# npx sequelize db:migrate:undo:all
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值