sequelize 常用命令使用

本文介绍了sequelize命令的使用,包括安装sequelize-cli、查看命令、初始化项目以及生成的configs、migrations、models和seeders文件夹的作用。重点讨论了数据库的创建、migrations命令和seeder操作,提醒在使用seed:all时要注意seederStorage的配置以防止重复数据插入。
部署运行你感兴趣的模型镜像

sequelize 命令集合

sequelize [命令]

命令:
  sequelize db:migrate                        运行待执行的迁移
  sequelize db:migrate:schema:timestamps:add  更新迁移表以获取时间戳
  sequelize db:migrate:status                 列出所有迁移的状态
  sequelize db:migrate:undo                   恢复迁移
  sequelize db:migrate:undo:all               恢复所有迁移
  sequelize db:seed                           运行指定的种子
  sequelize db:seed:undo                      撤消最近执行的种子
  sequelize db:seed:all                       运行所有种子
  sequelize db:seed:undo:all                  撤消所有已执行的种子
  sequelize db:create                         创建配置中指定的数据库
  sequelize db:drop                           删除配置中指定的数据库
  sequelize init                              初始化项目
  sequelize init:config                       初始化配置
  sequelize init:migrations                   初始化迁移
  sequelize init:models                       初始化模型
  sequelize init:seeders                      初始化种子
  sequelize migration:generate                生成新的迁移文件                         [aliases: migration:create]
  sequelize model:generate                    生成一个模模型及期迁移文件                 [aliases: model:create]
  sequelize seed:generate                     生成一个新的种子文件                      [aliases: seed:create]

选项:
  --help     显示帮助信息                                                              [布尔]
  --version  显示版本号                                                                [布尔]

安装:

npm install sequelize sequelize-cli mysql2 --save

使用 sequelize-cli

  • 查看命令

    node_module/.bin/sequelize 等同于 npx sequelize

  • 初始化:npx sequelize init

    初始化命令执行完成后会生成 configs、migrations、models、seeders 文件夹

    • config:包含配置文件,这些文件会告诉CLI怎样连接数据库
    • models:包含项目中的所有模型
    • migrations:包含所有迁移文件
    • seeders:包含所有种子文件

    动态配置上述文件夹位可以在项目根目录配置 .sequelizerc 文件

    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')
    }
    
  • 创建数据库: npx sequelize db:create

  • migrations 命令

    // migrations 文件夹内会生成一个新文件
    创建模型:npx sequelize model:create --name users --attributes name:STRING models/migrations
    
    // 在数据库中生成 users 表
    迁移:npx sequelize db:migrate
    
    // 执行 migrations migrations 中最近文件 down 方法,默认删除对应的表
    撤销迁移:npx sequelize db:migrate:undo
    
    // 撤销指定的文件 xxxx.ts 在数据库的 SequelizeMeta 表(如果是添加/删除字段,表中数据也会更新)
    撤销指定文件:npx sequelize migrate:undo --name xxxx.ts(迁移文件)
    
    // 撤销所有迁移
    撤销所有迁移:npx sequelize db:migrate:undo:all
    
    // 建立一个新的迁移文件 xxxx.ts
    表新增字段:npx sequelize migration:generate --name usersAdd
    
  • seeder 相关

    // 在 seeders 文件夹中生成 xxxx.js 文件
    创建 seeder 文件: npx sequelize seed:generate --name mockUser
    
    // 执行所有种子文件,数据插入成功,但是 seeder 文件默认是没有历史记录,如果再次执行还是会在数据库插入相同数据
    执行所有的种子文件:npx sequelize db:seed:all
    
    // 撤销所有种子文件
    撤销所有种子文件:npx sequelize db:seed:undo:all
    

    注意⚠️:在 seed:all命令 seeder 文件默认是没有历史记录,如果再次执行还是会在数据库插入相同数据,为避免这种情况的发生需要在 config 文件中配置 seederStorage

    "development": {
        "username": "root",
        "password": "123456",
        "database": "test",
        "host": "127.0.0.1",
        "dialect": "mysql",
    		// 使用不同的存储空间. Default: none(sequelize(seed记录存储到数据库中)|json(目录文件中))
        "seederStorage": "sequelize",
    		// 使用不同的表名 Default: SequelizeData(db 存储表名)
        "seederStorageTableName": "sequelize_data"
      }
    
  • 关于迁移存储以及种子存储

    {
      "development": {
        "username": "root",
        "password": "test",
        "database": "test",
        "host": "127.0.0.1",
        "dialect": "mysql",
    
    	// ------迁移存储------
    	
        // 使用不同的存储类型. Default: sequelize (sequelize or json)
        "migrationStorage": "json",
        // 使用不同的文件名. Default: sequelize-meta.json
        "migrationStoragePath": "sequelizeMeta.json",
        // 使用不同的表名. Default: SequelizeMeta
        "migrationStorageTableName": "sequelize_meta"
        
        // ------种子存储------
        
        // 使用不同的存储空间. Default: none (sequelize or json)
        "seederStorage": "json",
        // 使用不同的文件名. Default: sequelize-data.json
        "seederStoragePath": "sequelizeData.json",
        // 使用不同的表名 Default: SequelizeData
        "seederStorageTableName": "sequelize_data"
      }
    }
    

您可能感兴趣的与本文相关的镜像

Seed-Coder-8B-Base

Seed-Coder-8B-Base

文本生成
Seed-Coder

Seed-Coder是一个功能强大、透明、参数高效的 8B 级开源代码模型系列,包括基础变体、指导变体和推理变体,由字节团队开源

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值