@fly_dream/sequelize-connection
v0.0.1
Published
sequelize 数据库连接管理库
Downloads
2
Readme
sequelize-connnection
Sequelize
连接管理, 支持多连接。
安装
npm install @fly_dream/sequelize-connnection
使用
1. 基本使用
import { connect } from '@fly_dream/sequelize-connnection';
await connect({
connections: {
default: {
uri: '',
modelInitFns: [],
},
},
});
2. 多个连接
import { connect } from '@fly_dream/sequelize-connnection';
await connect({
connections: {
// 连接1, 默认连接
default: {
uri: '',
modelInitFns: [],
},
// 连接2
conn1: {
uri: '',
modelInitFns: [],
},
},
});
3. 配置日志
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. 读写分离
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
中使用
import { connect } from '@fly_dream/sequelize-connnection';
register_fastify(app, {
uri: '',
modelInitFns: [],
});
6. 配置模型初始化函数
- 定义模型
// 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 })
}
- 配置连接
import { connect } from '@fly_dream/sequelize-connnection';
import { initModels } from './models';
await connect({
connections: {
default: {
uri: '',
modelInitFns: [initModels],
},
},
});
API
1. connect(options): Promise<void>
初始化连接,并执行初始化函数。
参数
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 的基础上增加了 uri
、modelInitFns
、logger
三个配置项
示例
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<void>
断开所有的数据库连接, 通常用于在应用退出时使用