内容简介:注意:执行上面命令,会生成以下几个文件夹:将
0. 初始化项目
$ npm init
1. 安装 sequelize-cli
$ npm install --save sequelize-cli sequelize mysql2
注意: sequelize-cli
是要依赖于 sequelize
和 mysql2
的。
2. 生成 sequelize
目录
$ node_modules/.bin/sequelize init
执行上面命令,会生成以下几个文件夹:
-
config
:包含一个config.json
文件 -
models
:包含一个index.js
文件 -
migrations
:空文件夹 -
seeders
:空文件夹
3. 配置连接数据库的信息
将 config/config.json
文件里的信息修改为本机数据库的信息:
{ "development": { "username": "root", "password": "123456", "database": "database_development", "host": "127.0.0.1", "dialect": "mysql" }, "test": { "username": "root", "password": "123456", "database": "database_test", "host": "127.0.0.1", "dialect": "mysql" }, "production": { "username": "root", "password": "123456", "database": "database_production", "host": "127.0.0.1", "dialect": "mysql" } }
注意: password
字段是字符串类型,切勿设置为数字类型。
4. 创建数据库
$ node_modules/.bin/sequelize db:create
执行上面命令,会一句 config/config.json
文件所配置的创建 database_development
数据库。
5. 生成模型文件和迁移文件
$ node_modules/.bin/sequelize model:generate --name User --attributes firstName:string,lastName:string,email:string
执行上面命令会:
- 在
models
文件夹里生成一个user.js
文件 - 在
migrations
文件夹里生成一个20190210132709-create-user.js
文件
注意: 这里,我把 20190210132709-create-user.js
文件里的 createdAt
和 updatedAt
两个字段中的 allowNull
改成了 true
,避免在后面的执行种子文件操作中报错。
6. 执行迁移
$ node_modules/.bin/sequelize db:migrate
执行上面命令,会在 database_development
数据库中创建 sequelizemeta
表和 users
表。
users
表里面长这样:
7. 生成种子文件
$ node_modules/.bin/sequelize seed:generate --name demo-user
执行上面命令,会在 seeders
文件夹里生成一个 20190210132832-demo-user.js
文件,然后我们将该文件修改成以下这样:
'use strict'; module.exports = { up: (queryInterface, Sequelize) => { return queryInterface.bulkInsert('Users', [{ firstName: 'John', lastName: 'Doe', email: 'demo@demo.com' }], {}); }, down: (queryInterface, Sequelize) => { return queryInterface.bulkDelete('Users', null, {}); } };
8. 执行种子文件
$ node_modules/.bin/sequelize db:seed:all
执行上面命令,会在 database_development
数据库的 users
表中插入一条数据。
9. 总结
至此,我们成功使用 sequelize-cli 创建数据库和表,并插入默认数据了。更多详细信息,请参阅 这里 。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。