mysql 创建连接池TypeOrm

esyap4oy  于 2023-04-19  发布在  Mysql
关注(0)|答案(4)|浏览(387)

如何使用TypeOrm创建一个连接池?在探索TypeOrm时,我想创建一个连接池来使用MySql
下面是代码片段:

import { createConnection } from 'typeorm';

export const databaseProviders = [
  {
    provide: 'DbConnectionToken',
    useFactory: async () => await createConnection({
      type: 'mysql',
      host: 'localhost',
      port: 8889,
      username: 'root',
      password: 'root',
      database: 'typeorm_test',
      entities: [
        __dirname + '/../**/**.entity{.ts,.js}',
      ],
      autoSchemaSync: true,
      logging: 'all',
    }),
  },
];
uurv41yg

uurv41yg1#

TypeORM默认使用一个连接池,默认为10个连接。如果你想有自定义池限制(建议),同样可以在extra选项下提到connectionLimit,这些选项被传递到底层MySQL驱动程序。

[
    {
        "name": "default",
        "type": "mysql",
        "host": "mysql.db",
        "port": 3306,
        "username": "appUser",
        "password": "appRandomPassword",
        "database": "entity_schema",
        "entities": [
            "dist/models/entities/**/*.js"
        ],
        "logging": [
            "error"
        ],
        "extra": {
            "connectionLimit": 5
        }
    }
]

TypeORM文档
如果需要,可以在extra下传递的MySQL连接池选项。

zpgglvta

zpgglvta2#

TypeORM总是为你创建一个连接池,你不需要设置任何东西。它使用一个连接池,每个请求到仓库/实体管理器方法,或每个事务。

wljmcqd8

wljmcqd83#

0.3.10版本开始,有一个统一的属性来处理连接池的最大大小,方法是在连接配置中使用poolSize: number
您的配置现在应该类似于

import { createConnection } from 'typeorm';

export const databaseProviders = [
  {
    provide: 'DbConnectionToken',
    useFactory: async () => await createConnection({
      type: 'mysql',
      host: 'localhost',
      port: 8889,
      username: 'root',
      password: 'root',
      database: 'typeorm_test',
      entities: [
        __dirname + '/../**/**.entity{.ts,.js}',
      ],
      autoSchemaSync: true,
      logging: 'all',
      poolSize: 10,
    }),
  },
];
qjp7pelc

qjp7pelc4#

你需要传递一个extra参数到底层数据库。从官方文档看,它看起来像在typeorm中,只有mssql和mongo支持连接池。

相关问题