Sequelize CLI 配置与使用完全指南

Sequelize CLI 配置与使用完全指南

Sequelize CLI 配置与使用完全指南

【免费下载链接】cli The Sequelize CLI 项目地址: https://gitcode.com/gh_mirrors/cli10/cli

前言

Sequelize CLI 是 Sequelize ORM 的配套命令行工具,主要用于数据库迁移( migrations )和种子数据( seeders )管理。本文将详细介绍 Sequelize CLI 的各种配置选项和使用方法,帮助开发者更好地管理数据库变更。

基础配置方式

Sequelize CLI 提供了多种灵活的配置方式,可以根据项目需求选择最适合的一种。

1. 命令行参数配置

最直接的方式是在执行命令时通过命令行参数指定配置。例如:

sequelize db:migrate --config config/database.json --migrations-path db/migrations

这种方式适合临时性的配置变更,但对于需要频繁使用的配置则不够高效。

2. .sequelizerc 配置文件

对于需要长期使用的配置,推荐使用 .sequelizerc 文件。这个文件可以放在项目根目录下,支持 JSON 或 Node.js 脚本格式。

Node.js 格式示例:

const path = require('path');

module.exports = {

'config': path.resolve('config', 'database.json'),

'migrations-path': path.resolve('db', 'migrations'),

'seeders-path': path.resolve('db', 'seeders'),

'models-path': path.resolve('src', 'models')

};

这种方式的优势在于:

配置集中管理,便于维护可以使用 Node.js 的动态功能支持路径解析,避免硬编码

3. 数据库连接配置

数据库连接配置通常存储在 config/config.json 或 config/config.js 文件中,支持多种环境配置:

{

"development": {

"username": "root",

"password": null,

"database": "app_development",

"host": "127.0.0.1",

"dialect": "mysql",

"port": 3306

},

"test": {

"username": "root",

"password": null,

"database": "app_test",

"host": "127.0.0.1",

"dialect": "mysql"

},

"production": {

"username": "root",

"password": null,

"database": "app_production",

"host": "127.0.0.1",

"dialect": "mysql"

}

}

或者使用连接字符串格式:

{

"development": {

"url": "mysql://root:password@localhost:3306/app_development",

"dialect": "mysql"

}

}

高级配置选项

1. 环境变量配置

在生产环境中,推荐使用环境变量来配置数据库连接:

// config/config.js

module.exports = {

production: {

use_env_variable: "DATABASE_URL",

dialect: "postgres",

dialectOptions: {

ssl: {

require: true,

rejectUnauthorized: false

}

}

}

};

或者在配置文件中直接引用环境变量:

module.exports = {

production: {

username: process.env.DB_USER,

password: process.env.DB_PASS,

database: process.env.DB_NAME,

host: process.env.DB_HOST,

dialect: "postgres"

}

};

2. SSL 连接配置

对于需要 SSL 加密的连接,可以这样配置:

{

"production": {

"dialect": "postgres",

"ssl": true,

"dialectOptions": {

"ssl": {

"require": true,

"rejectUnauthorized": false

}

}

}

}

3. 方言特定选项

不同数据库方言(dialect)可能有特定的配置选项:

module.exports = {

development: {

dialect: 'mysql',

dialectOptions: {

// MySQL 特定选项

connectTimeout: 10000,

// 其他选项...

}

}

};

迁移与种子存储配置

迁移存储配置

默认情况下,Sequelize 会在数据库中创建一个 SequelizeMeta 表来记录已执行的迁移。你可以自定义这一行为:

{

"development": {

// ...其他配置

"migrationStorage": "json", // 可选: sequelize, json, none

"migrationStoragePath": "custom-meta.json", // 仅当使用 json 存储时需要

"migrationStorageTableName": "custom_migrations", // 仅当使用 sequelize 存储时需要

"migrationStorageTableSchema": "custom_schema" // PostgreSQL 专用

}

}

存储类型说明:

sequelize:在数据库表中记录迁移(默认)json:在 JSON 文件中记录迁移none:不记录迁移历史(不推荐)

种子存储配置

种子数据存储配置与迁移类似:

{

"development": {

// ...其他配置

"seederStorage": "json", // 可选: sequelize, json, none

"seederStoragePath": "custom-seed-data.json", // 仅当使用 json 存储时需要

"seederStorageTableName": "custom_seeders" // 仅当使用 sequelize 存储时需要

}

}

迁移文件结构

Sequelize 迁移文件遵循特定结构:

module.exports = {

up: async (queryInterface, Sequelize) => {

// 迁移逻辑

await queryInterface.createTable('Users', {

id: {

type: Sequelize.INTEGER,

primaryKey: true,

autoIncrement: true

},

name: {

type: Sequelize.STRING,

allowNull: false

},

createdAt: {

type: Sequelize.DATE,

allowNull: false

},

updatedAt: {

type: Sequelize.DATE,

allowNull: false

}

});

},

down: async (queryInterface) => {

// 回滚逻辑

await queryInterface.dropTable('Users');

}

};

注意事项:

up 和 down 方法必须返回 Promise可以通过 queryInterface.sequelize 访问 Sequelize 实例迁移应该是幂等的,可以安全地多次执行

最佳实践建议

环境隔离:始终为不同环境(开发、测试、生产)配置独立的数据库连接敏感信息保护:生产环境密码等敏感信息应通过环境变量配置版本控制:将迁移文件和种子文件纳入版本控制系统备份策略:在执行重要迁移前备份数据库小步迁移:每个迁移文件只做一件事,保持简单明确测试迁移:在测试环境验证迁移脚本后再应用到生产环境

常见问题解答

Q:如何添加迁移时间戳?

从 v2.8.0 开始,可以运行以下命令为迁移记录添加时间戳:

sequelize db:migrate:schema:timestamps:add

Q:如何从旧版迁移到新版?

如果还在使用 v2 之前的旧模式,可以运行:

sequelize db:migrate:old_schema

Q:如何查看已应用的迁移?

对于数据库存储方式:

SELECT * FROM "SequelizeMeta";

对于 JSON 存储方式:

cat sequelize-meta.json

通过本文的介绍,你应该已经掌握了 Sequelize CLI 的核心配置和使用方法。合理配置和使用 Sequelize CLI 可以大大简化数据库变更管理流程,提高开发效率。

【免费下载链接】cli The Sequelize CLI 项目地址: https://gitcode.com/gh_mirrors/cli10/cli

相关推荐

镶牙可以用多久
365bet官网欧洲

镶牙可以用多久

📅 08-16 👁️ 7207
pdf转换成cad
365淘房APP官网下载

pdf转换成cad

📅 10-12 👁️ 1471
物流能寄煤油吗(物流能寄煤油吗现在)
365淘房APP官网下载

物流能寄煤油吗(物流能寄煤油吗现在)

📅 08-28 👁️ 3874
传承千年鸬鹚捕鱼,为何突然被禁?鸬鹚捕鱼危害有多大?
天猫和京东哪个好?京东有什么优势?
365bet官网欧洲

天猫和京东哪个好?京东有什么优势?

📅 11-09 👁️ 6104
旅行青蛙最多一次出去几天会回来?最长出门时间详情[图]
企鹅号注册数量超限怎么办?注册审核要多久?
365bet官网欧洲

企鹅号注册数量超限怎么办?注册审核要多久?

📅 06-30 👁️ 5707
云顶之弈快捷键大全
365bet官网欧洲

云顶之弈快捷键大全

📅 09-12 👁️ 5391
雷诺是什么意思
365淘房APP官网下载

雷诺是什么意思

📅 10-10 👁️ 7586