# sequelize-connection **Repository Path**: towardly/sequelize-connection ## Basic Information - **Project Name**: sequelize-connection - **Description**: sequelize 数据库连接管理库 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-12-21 - **Last Updated**: 2023-12-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: nodesj, Sequelize, ORM ## README # sequelize-connnection `Sequelize` 连接管理, 支持多连接。 ## 安装 ```shell npm install @fly_dream/sequelize-connnection ``` ## 使用 ### 1. 基本使用 ```js import { connect } from '@fly_dream/sequelize-connnection'; await connect({ connections: { default: { uri: '', modelInitFns: [], }, }, }); ``` ### 2. 多个连接 ```js import { connect } from '@fly_dream/sequelize-connnection'; await connect({ connections: { // 连接1, 默认连接 default: { uri: '', modelInitFns: [], }, // 连接2 conn1: { uri: '', modelInitFns: [], }, }, }); ``` ### 3. 配置日志 ```typescript import { connect } from '@fly_dream/sequelize-connnection'; await connect({ // 日志记录的函数 logger: (sql: string, time?: number) => logger.debug(sql) connections: { default: { uri: '', modelInitFns: [], logger: (sql: string, time?: number) => logger.debug(sql) } } } ``` 配置在 `connections` 里面的 `logger` 是每一个连接的日志; 如果不填则会使用 `connections` 外面的全局的 `logger` 配置。 ### 4. 读写分离 ```typescript import { connect } from '@fly_dream/sequelize-connnection'; await connect({ connections: { default: { modelInitFns: [], replication: { // 配置读 read: [{ host: 'localhost', username: 'user', password: 'pwd' }], // 配置写 write: { host: 'localhost', username: 'user', password: 'pwd' }, }, }, }, }); ``` ### 5. 在 `fastify` 中使用 ```typescript import { connect } from '@fly_dream/sequelize-connnection'; register_fastify(app, { uri: '', modelInitFns: [], }); ``` ### 6. 配置模型初始化函数 1. 定义模型 ```typescript // model.ts import { DataTypes, Model } from 'sequelize'; /** 用户表 */ export class User extends Model {} /** * 初始化模型 * @param {object} sequelize * @param {string} charset - 字符编码, utf8mb4 */ export function initModels(sequelize: Sequelize, charset: string) { User.init(..., { charset }) } ``` 2. 配置连接 ```typescript import { connect } from '@fly_dream/sequelize-connnection'; import { initModels } from './models'; await connect({ connections: { default: { uri: '', modelInitFns: [initModels], }, }, }); ``` ## API ### 1. `connect(options): Promise` 初始化连接,并执行初始化函数。 #### 参数 - `options`:`object` - `logger`: `boolean` | `(sql, time) => void` - `connections`:`object` - `default`:`object` - `uri`:`string` - `modelInitFns`:`Array<() => void>` `logger` 配置为 `true` 时, 使用 `console.log` 记录日志 `connections` 中的 `key` 指定连接名称, `value` 连接配置, 在 [sequelize-api](https://sequelize.org/api/v6/class/src/sequelize.js~sequelize#instance-constructor-constructor) 的基础上增加了 `uri`、`modelInitFns`、`logger` 三个配置项 #### 示例 ```js import { connect } from '@fly_dream/sequelize-connnection'; const config = { logger: true, connections: { default: { uri:'mysql://root:root@localhost:3306/test', modelInitFns: [ () => { // 自定义模型初始化函数 ] } } } await connect(config); ``` ### 2. `register_fastify(app, config)` 用于在 `fastify` 中使用, 默认使用 `app.log.debug` 记录 SQL 日志; 同时在 `app.close` 的时候, 会自动关闭所有连接 ### 3. `connection(name = 'default')` 获取某个 `Sequelize` 连接实例 ### 4. `closeAll(): Promise` 断开所有的数据库连接, 通常用于在应用退出时使用