src/connection/BaseConnectionOptions.ts
//基本连接选项接口,由特定数据库的连接选项实现
export interface BaseConnectionOptions {
//数据库类型,"mysql"| "postgres"|"mariadb"|"sqlite"|"cordova"|"sqljs"|"oracle"|"mssql"|"websql"|"mongodb";
readonly type: DatabaseType;
//连接名称
readonly name?: string;
//被连接加载的实体,支持实体类与目录、文件名
readonly entities?: Function[]|string[];
//订阅类数组,可以是类或者目录
readonly subscribers?: Function[]|string[];
//实体模式数组
readonly entitySchemas?: EntitySchema[]|string[];
//迁移类数组
readonly migrations?: Function[]|string[];
//命名策略
readonly namingStrategy?: NamingStrategyInterface;
//日志选项, boolean|"all"|("query"|"schema"|"error"|"warn"|"info"|"log"|"migration")[]
//指定了对指定数据库操作、指定级别显示日志
readonly logging?: LoggerOptions;
//日志方式,控制台、文件
readonly logger?: "advanced-console"|"simple-console"|"file"|"debug"|Logger;
//最大查询执行时间,毫秒
readonly maxQueryExecutionTime?: number;
//是否同步,指明是否每次应用程序启动时会对比数据库表与实体类,会保证实体类属性与表列对应,除了删除列,不会删除数据
readonly synchronize?: boolean;
//指明是否所有的migrations会在应用程序启动时自动运行
readonly migrationsRun?: boolean;
//每次连接建立删除实体对应的数据库表
readonly dropSchema?: boolean;
//这个连接对应的数据库表前缀
readonly entityPrefix?: string;
//扩展参数
readonly extra?: any;
//缓存选项
readonly cache?: boolean|{
//缓存类型,数据库存储,或者redis存储
readonly type?: "database"|"redis";
readonly options?: any;
//是否所有find与QueryBuilder方法结果都会被缓存
readonly alwaysEnabled?: boolean;
//缓存过期的毫秒数
readonly duration?: number;
};
//命令行设置
readonly cli?: {
//创建实体的目录
readonly entitiesDir?: string;
//创建Migration的目录
readonly migrationsDir?: string;
//创建Subscript的目录
readonly subscribersDir?: string;
};
}
基本连接选项,被特定数据库实现,如:
src/driver/mysql/MysqlConnectionOptions.ts
//Mysql的连接选项,包含特定于Mysql的选项
export interface MysqlConnectionOptions extends BaseConnectionOptions, MysqlConnectionCredentialsOptions {
//类型两种
readonly type: "mysql"|"mariadb";
//连接编码,在sql级别进行校对
readonly charset?: string;
//mysql服务器使用的时区,用来将服务器时间类型转换为JsDate对象
readonly timezone?: string;
//连接超时毫秒数
readonly connectTimeout?: number;
//允许使用老的不安全的认证方法连接到数据库
readonly insecureAuth?: boolean;
//是否支持BIGINT类型等
readonly supportBigNumbers?: boolean;
//大的数字会被强制以字符串类型返回
readonly bigNumberStrings?: boolean;
//是否强制所有日期类型以字符串对象返回,而不是以JSDate对象返回,也可以为类型名称数组,三个类型:TIMESTAMP、DATETIME、DATE
readonly dateStrings?: boolean|string[];
//打印详细调试信息
readonly debug?: boolean|string[];
//打印错误的堆栈追踪
readonly trace?: boolean;
//允许多语句预查询?
readonly multipleStatements?: boolean;
//标志数组
readonly flags?: string[];
//主从复制设置
readonly replication?: {
//执行写操作的主服务器选项
readonly master: MysqlConnectionCredentialsOptions;
//执行读操作的从服务器选项数组
readonly slaves: MysqlConnectionCredentialsOptions[];
//连接失败是否尝试重连
readonly canRetry?: boolean;
//是否移除错误节点
readonly removeNodeErrorCount?: number;
//重置节点超时,即一个节点多久连接不上,转到另一个节点处理
readonly restoreNodeTimeout?: number;
//从节点如何选择,轮流选择、随机选择、按顺序选择(每次选择第一个节点)
readonly selector?: "RR"|"RANDOM"|"ORDER";
};
}
src/driver/mysql/MysqlConnectionCredentialsOptions.ts
//Mysql证书选项
export interface MysqlConnectionCredentialsOptions {
//mysql连接url
readonly url?: string;
//域名
readonly host?: string;
//端口号
readonly port?: number;
//用户名
readonly username?: string;
//密码
readonly password?: string;
//数据库名
readonly database?: string;
//启用ssl连接
readonly ssl?: any;
}
其中比较特别的就是主从复制配置了