NodeJS的sequelize迁移

319 阅读2分钟

这是我参与2022首次更文挑战的第12天,活动详情查看:2022首次更文挑战

Sequelize 中的 Migration 是一个 javascript 文件,它导出两个函数 up 和 down,这些函数指示如何执行迁移和撤消它, 可以手动定义这些功能,但不必手动调用它们; 它们将由 CLI 自动调用. 在这些函数中,借助 sequelize.query 以及 Sequelize 提供给其他任何方法, 简单地执行所需的任何查询

安装 CLI

安装 Sequelize CLI

npm install --save-dev sequelize-cli

项目启动

要创建一个空项目,执行 init

npx sequelize-cli init 

创建以下文件夹

  • config, 包含配置文件,它配置CLI如何连接数据库
  • models,包含项目的所有模型
  • migrations, 包含所有迁移文件
  • seeders, 包含所有种子文件

结构

打开默认配置文件 config/config.json:

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

默认情况下,Sequelize CLI 使用 mysql,现在编辑此文件并设置正确的数据库凭据, 例如 "development"用于 model/index.js 以匹配 process.env.NODE_ENV

Sequelize 将为每个数据库使用默认的连接端口(例如,postgres,它是端口5432). 如果需要指定其他端口,请使用 port 字段(默认情况下它不在 config/config.js 中).

注意: 如果数据库还不存在, 可以调用 db:create 命令. 通过正确的访问,它将为你创建该数据库.*

创建第一个模型(和迁移)

正确配置了CLI配置文件,就可以创建迁移, 将使用 model:generate 命令. 此命令需要两个选项

  • name: 模型的名称
  • attributes: 模型的属性列表
npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string

执行以下操作

  • 在 models 文件夹中创建了一个 user 模型文件;
  • 在 migrations 文件夹中创建了一个名字像 X-create-user.js 的迁移文件.

注意:  *Sequelize 将只使用模型文件, 迁移文件是该模型的更改, 或更具体的是说 CLI 所使用的表

运行迁移

CLI没有将任何东西插入数据库. 模型 User 创建了必需的模型和迁移文件. 现在要在数据库中实际创建该表,需要运行 db:migrate 命令

npx sequelize-cli db:migrate

将执行这些步骤

  • 将在数据库中确保一个名为 SequelizeMeta 的表. 此表用于记录在当前数据库上运行的迁移
  • 开始寻找尚未运行的任何迁移文件. 这可以通过检查 SequelizeMeta 表. 在这个例子中,它将运行创建的 X-create-user.js 迁移,.
  • 创建一个名为 Users 的表,其中包含其迁移文件中指定的所有列.