Sequelize 是一个基于 promise 的 Node.js ORM。一般项目都会用到 官网链接。当时只是单纯的建Model层,数据库操作。而Sequelize -cli是我在用eggjs做项目的时候遇到的,链接地址(当时没有好好看Sequelize 官方网站,就没留心有该脚手架)。
之前写过sequelize 入门链接,有兴趣的可以看看
本文做一次关于Sequelize-cli的整理,从无到有,记录。
安装
mkdir sequlize-cli-test
npm i sequelize-cli -g // 有人全局,网上有人当前文件 -D /node_moudules/sequelize-cli/lib 环境变量
npm i sequelize
npm i mysql2
初始化
sequelize init
-
config:包含配置文件,它告诉CLI区分env连接数据库
-
models:包含您的项目的所有模型
-
migrations:包含所有迁移文件 (数据表结构)
-
seeders:包含所有种子文件 (具体数据)
创建数据库和删除数据库
config
创建
sequelize db:create
默认development
开发环境,如果要区分环境变量,db:create --env production
navicat查看效果
删除
sequelize db:drop sequelize-cli-test
创建模型文件 model
创建一个模型文件
- name:模型名称,必须
- attributes:字段列表,必须
sequelize model:generate --name User --attributes firstName:string,lastName:string,email:string,age:number
-
在 models 文件夹中创建了一个 user 模型文件(供程序使用)
-
在 migrations 文件夹中创建了一个名字像 时间戳-create-xxx.js 的迁移文件(供迁移使用)
当然这只是生成基础模板,如果后期新增需求,可以更改对应文件
当然此时数据库没有对应user表
执行迁移
所谓迁移,就是对数据库进行结构的创建,升级(修改)等操作
sequelize db:migrate
会在数据库中创建一个 SequelizeMeta 表,用于记录每次的迁移记录
对sequelize基础数据类型要正确使用!!!
查看状态
当前文件未被执行过,状态为down 执行过则为 up
sequelize db:migrate:status
---------------------------此处为错误示范---------------------------
当此时发现20210408081122-create-user
里字段需要更改(当然你model对应更改),更改之后sequelize db:migrate
说明需要重新生成 时间戳-create-xxx.js 迁移文件
但是数据库是不会及时更新,除非你把新建的迁移文件和数据库sequelizeMeta删掉,重新来过,但是这样版本迭代就没有意义了
----------------------------此处为错误示范----------------------------------
正确示范
新建一个文件,更新
sequelize migration:create --name addPhone
sequelize db:migrate
现在版本回退,phone字段没有的版本
sequelize db:migrate:undo - 撤销上一次的迁移操作
sequelize db:migrate:undo:all - 撤销所有的迁移操作
sequelize db:migrate:undo --name 具体迁移脚本
回退指定版本
我现在还是迁移最新状态(添加phone的状态)
种子文件
种子文件是用来构建数据的
sequelize seed:generate --name seedName
新增文件并修改
sequelize db:seed --send seedName 运行指定种子文件
sequelize db:seed:all 运行所有种子文件
撤销
db:seed:undo --seed sendName 指定种子文件
db:seed:undo:all 撤销所有种子文件
种子存储记录
默认情况下seed不记录过程,如果需要记录则需要单独设置,在配置文件config.json中增加
seederStorage:存储引擎:none、json、mongodb、sequelize
seederStoragePath: 存储路径(json有效)
seederStorageTableName:存储表名,mongodb和sequelize有效
以json为例
基本的sequelize-cli快速入门操作已说明完毕,学废了吗?
下班!!!