前言:
目前姐妹们对“连接池代码”大体比较注意,我们都需要知道一些“连接池代码”的相关资讯。那么小编同时在网摘上搜集了一些有关“连接池代码””的相关知识,希望姐妹们能喜欢,朋友们快快来学习一下吧!TypeORM竟然没有连接池?
根据TypeORM的文档,对于常用的连接选项以及mysql的相关配置项,我们发现竟然没有提供连接池相关的参数,那么TypeORM到底有没有使用连接池呢?答案是当然有。那么它的连接池是怎么创建的?
原码解析
查看原码我们可以知道,在typeorm/connection/Connection.js中可以看到平时我们使用的EntityManager都是通过ConnectManager创建的。数据库的连接都是通过ConnectManager创建的,我们在原码中找到相关的地方。
它是通过driver这个对象创建连接的,那么我们看下这个driver对象是怎么创建的。
如图,driver对象是根据DriverFactory创建出来的,那么我们继续跟踪代码,在typeorm/driver/DriverFactory.js中找到它的create方法做了什么。
根据代码可以看出,DriverFactory会根据不同的type类型调用不同的驱动,我们使用的是mysql,因此我们根据MysqlDriver继续跟踪查看逻辑。
在typeorm/driver/mysql/MysqlDriver.js中终于找到了创建连接池的代码。
那么我们跟着看下createPool中做了些什么。
果然故事还将继续,最终连接池是一个mysql对象闯将的。那么看下这个mysql对象。
我们在loadDependencies方法中找到了这个mysql的赋值逻辑。接下来去PlatformTools看下load实现。
我们在typeorm/platform/PlatformTools.js的load方法中终于明白了,最终是直接依赖于mysql,调用了mysql依赖包实现的createPool。
改进方法
既然使用的是mysql包中的连接池,那么去mysql包中查看readme。Readme中已经示例了连接池的用法,以及相关参数示例
那么接下来我们只需要把对应的参数通过typeorm参数传入即可。
先找到typeorm创建连接池时传入参数的方法createConnectionOptions.
接着改造此方法的逻辑,把mysql连接池的参数传入赋值即可。
标签: #连接池代码