命令行界面

安装命令行界面

让我们从安装CLI开始,你可以在 [这里][0] 找到说明. 最推荐的方式是这样安装

  1. $ npm install --save sequelize-cli

引导

要创建一个空项目,你需要执行 init 命令

  1. $ npx sequelize-cli init

这将创建以下文件夹

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

结构

在继续进行之前,我们需要告诉 CLI 如何连接到数据库. 为此,可以打开默认配置文件 config/config.json. 看起来像这样

  1. {
  2. "development": {
  3. "username": "root",
  4. "password": null,
  5. "database": "database_development",
  6. "host": "127.0.0.1",
  7. "dialect": "mysql"
  8. },
  9. "test": {
  10. "username": "root",
  11. "password": null,
  12. "database": "database_production",
  13. "host": "127.0.0.1",
  14. "dialect": "mysql"
  15. },
  16. "production": {
  17. "username": "root",
  18. "password": null,
  19. "database": "database_test",
  20. "host": "127.0.0.1",
  21. "dialect": "mysql"
  22. }
  23. }

现在编辑此文件并设置正确的数据库凭据和方言.对象的键(例如 “development”)用于 model/index.js 以匹配 process.env.NODE_ENV(当未定义时,默认值是 “development”).

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

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

一旦你正确配置了CLI配置文件,你就可以首先创建迁移. 它像执行一个简单的命令一样简单.

我们将使用 model:generate 命令. 此命令需要两个选项

  • name, 模型的名称
  • attributes, 模型的属性列表

让我们创建一个名叫 User 的模型

  1. $ npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string

这将发生以下事情

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

注意: Sequelize 将只使用模型文件,它是表描述.另一边,迁移文件是该模型的更改,或更具体的是说 CLI 所使用的表. 处理迁移,如提交或日志,以进行数据库的某些更改.

运行迁移

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

  1. $ npx sequelize-cli db:migrate

此命令将执行这些步骤

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

撤消迁移

现在我们的表已创建并保存在数据库中. 通过迁移,只需运行命令即可恢复为旧状态.

你可以使用 db:migrate:undo,这个命令将会恢复最近的迁移.

  1. $ npx sequelize-cli db:migrate:undo

通过使用 db:migrate:undo:all 命令撤消所有迁移,可以恢复到初始状态. 你还可以通过将其名称传递到 --to 选项中来恢复到特定的迁移.

  1. $ npx sequelize-cli db:migrate:undo:all --to XXXXXXXXXXXXXX-create-posts.js

创建第一个种子

假设我们希望在默认情况下将一些数据插入到几个表中. 如果我们跟进前面的例子,我们可以考虑为 User 表创建演示用户.

要管理所有数据迁移,你可以使用 seeders. 种子文件是数据的一些变化,可用于使用样本数据或测试数据填充数据库表.

让我们创建一个种子文件,它会将一个演示用户添加到我们的 User 表中.

  1. $ npx sequelize-cli seed:generate --name demo-user

这个命令将会在 seeders 文件夹中创建一个种子文件.文件名看起来像是 XXXXXXXXXXXXXX-demo-user.js,它遵循相同的 up/down 语义,如迁移文件.

现在我们应该编辑这个文件,将演示用户插入User表.

  1. 'use strict';
  2. module.exports = {
  3. up: (queryInterface, Sequelize) => {
  4. return queryInterface.bulkInsert('Users', [{
  5. firstName: 'John',
  6. lastName: 'Doe',
  7. email: 'demo@demo.com',
  8. createdAt: new Date(),
  9. updatedAt: new Date()
  10. }], {});
  11. },
  12. down: (queryInterface, Sequelize) => {
  13. return queryInterface.bulkDelete('Users', null, {});
  14. }
  15. };

运行种子

在上一步中,你创建了一个种子文件. 但它还没有保存到数据库. 为此,我们需要运行一个简单的命令.

  1. $ npx sequelize-cli db:seed:all

这将执行该种子文件,你将有一个演示用户插入 User 表.

注意: seeders 执行不会存储在任何使用 SequelizeMeta 表的迁移的地方. 如果你想覆盖这个,请阅读 存储 部分

撤销种子

Seeders 如果使用了任何存储那么就可以被撤消. 有两个可用的命令

如果你想撤消最近的种子

  1. $ npx sequelize-cli db:seed:undo

如果你想撤消特定的种子

  1. npx sequelize-cli db:seed:undo --seed name-of-seed-as-in-data

如果你想撤消所有的种子

  1. npx sequelize-cli db:seed:undo:all