• Connection API
    • Main API
    • Connection API
    • ConnectionManager API

    Connection API

    Main API

    • createConnection() - 创建一个新连接并将其注册到全局连接管理器中。 如果省略connection options参数,则从ormconfig文件或环境变量中读取连接选项。
    1. import {createConnection} from "typeorm";
    2. const connection = await createConnection({
    3. type: "mysql",
    4. host: "localhost",
    5. port: 3306,
    6. username: "test",
    7. password: "test",
    8. database: "test"
    9. });
    • createConnections() - 创建多个连接并在全局连接管理器中注册它们。 如果省略connection options参数,则从ormconfig文件或环境变量中读取连接选项。
    1. import {createConnections} from "typeorm";
    2. const connection = await createConnections([{
    3. name: "connection1",
    4. type: "mysql",
    5. host: "localhost",
    6. port: 3306,
    7. username: "test",
    8. password: "test",
    9. database: "test"
    10. }, {
    11. name: "connection2",
    12. type: "mysql",
    13. host: "localhost",
    14. port: 3306,
    15. username: "test",
    16. password: "test",
    17. database: "test"
    18. }]);
    • getConnectionManager() - 获取存储所有已创建(使用createConnection()createConnections())连接的管理器。
    1. import {getConnectionManager} from "typeorm";
    2. const defaultConnection = getConnectionManager().get("default");
    3. const secondaryConnection = getConnectionManager().get("secondary");
    • getConnection() - 获取使用createConnection方法创建的连接。
    1. import {getConnection} from "typeorm";
    2. const connection = getConnection();
    3. // 如果有命名连接,则可以指定其名称:
    4. const secondaryConnection = getConnection("secondary-connection");
    • getEntityManager() - 获取EntityManager。 可以指定连接名称以指示应该采用哪个连接的实体管理器。
    1. import {getEntityManager} from "typeorm";
    2. const manager = getEntityManager();
    3. // you can use manager methods now
    4. const secondaryManager = getEntityManager("secondary-connection");
    5. // you can use secondary connection manager methods
    • getRepository() - Gets Repository for given entity from connection. 可以指定连接名称以指示应该采用哪个连接的实体管理器。
    1. import {getRepository} from "typeorm";
    2. const userRepository = getRepository(User);
    3. // you can use repository methods now
    4. const blogRepository = getRepository(Blog, "secondary-connection");
    5. // you can use secondary connection repository methods
    • getTreeRepository() - Gets TreeRepository for given entity from connection. 可以指定连接名称以指示应该采用哪个连接的实体管理器。
    1. import {getTreeRepository} from "typeorm";
    2. const userRepository = getTreeRepository(User);
    3. // 使用存储库方法
    4. const blogRepository = getTreeRepository(Blog, "secondary-connection");
    5. // 使用另一个存储库方法
    • getMongoRepository() - 获取给定实体的MongoRepository。 可以指定连接名称以指示应该采用哪个连接的实体管理器。
    1. import {getMongoRepository} from "typeorm";
    2. const userRepository = getMongoRepository(User);
    3. //使用存储库方法
    4. const blogRepository = getMongoRepository(Blog, "secondary-connection");
    5. // 使用另一个存储库方法

    Connection API

    • name - 连接名。 如果没有指定连接名,则默认值为default。 在处理多个连接时使用此名称并调用getConnection(connectionName:string)
    1. const connectionName: string = connection.name;
    • options - 用于创建此连接的连接选项。 了解有关连接选项的更多信息。
    1. const connectionOptions: ConnectionOptions = connection.options;
    2. // 你可以将connectionOptions转换为MysqlConnectionOptions或任何其他xxxConnectionOptions,
    3. // 具体取决于你使用的数据库驱动程序
    • isConnected - 指示是否建立了与数据库的真实连接。
    1. const isConnected: boolean = connection.isConnected;
    • driver - 此连接中使用的基础数据库驱动程序。
    1. const driver: Driver = connection.driver;
    2. // 你可以根据使用的数据库驱动程序将connectionOptions转换为MysqlDriver或任何其他xxxDriver
    • manager - EntityManager用于连接实体。 查看更多关于实体管理器和存储库.
    1. const manager: EntityManager = connection.manager;
    2. // 你可以调用manager方法,例如find:
    3. const user = await manager.findOne(1);
    • mongoManager - MongoEntityManager用于处理mongodb连接中的连接实体。 有关MongoEntityManager的更多信息,请参阅MongoDB文档。
    1. const manager: MongoEntityManager = connection.mongoManager;
    2. //你可以调用manager或mongodb-manager特定方法,例如find:
    3. const user = await manager.findOne(1);
    • connect - 执行与数据库的连接。 当你使用createConnection时,它会自动调用connect,你不需要自己调用它。
    1. await connection.connect();
    • close - 关闭与数据库的连接。 通常需要在应用程序关闭时调用此方法。
    1. await connection.close();
    • synchronize - 同步数据库架构。 当在连接选项中设置synchronize:true时,它会调用此方法。 通常需要在应用程序关闭时调用此方法。
    1. await connection.synchronize();
    • dropDatabase - 删除数据库及其所有数据。 请谨慎使用此方法,因为此方法将清除所有数据库表及其数据。 只有在建立与数据库的连接后才能使用。
    1. await connection.dropDatabase();
    • runMigrations - 运行所有挂起的迁移。
    1. await connection.runMigrations();
    • undoLastMigration - 恢复上次执行的迁移。
    1. await connection.undoLastMigration();
    • hasMetadata - 检查是否已注册给定实体的元数据。 了解更多关于 Entity Metadata.
    1. if (connection.hasMetadata(User))
    2. const userMetadata = connection.getMetadata(User);
    • getMetadata - 获取给定实体的EntityMetadata。 你还可以指定表名,如果找到具有此类表名的实体元数据,则会返回该名称。 了解更多关于 Entity Metadata.
    1. const userMetadata = connection.getMetadata(User);
    2. // 获得有关用户实体的任何信息
    • getRepository - 获取给定实体的Repository。 你还可以指定表名,如果找到给定表的存储库,则会返回该表。 了解更多关于 Repositories。
    1. const repository = connection.getRepository(User);
    2. // 调用存储库方法,例如find:
    3. const users = await repository.findOne(1);
    • getTreeRepository - Gets TreeRepository of the given entity. 你还可以指定表名,如果找到给定表的存储库,则会返回该表。 了解更多关于 Repositories。
    1. const repository = connection.getTreeRepository(Category);
    2. // 调用树存储库方法,例如findTrees:
    3. const categories = await repository.findTrees();
    • getMongoRepository -获取给定实体的MongoRepository。 此存储库用于MongoDB连接中的实体。 了解更多关于 MongoDB support.
    1. const repository = connection.getMongoRepository(User);
    2. // 调用特定于mongodb的存储库方法,例如createEntityCursor:
    3. const categoryCursor = repository.createEntityCursor();
    4. const category1 = await categoryCursor.next();
    5. const category2 = await categoryCursor.next();
    • getCustomRepository - 获取自定义的存储库。 了解更多关于 custom repositories。
    1. const userRepository = connection.getCustomRepository(UserRepository);
    2. // 调用自定义存储库中的方法 - UserRepository类
    3. const crazyUsers = await userRepository.findCrazyUsers();
    • transaction - 提供单个事务,在单个数据库事务中执行多个数据库请求。 了解更多关于 Transactions.
    1. await connection.transaction(async manager => {
    2. // 注意:你必须使用给定的管理器实例执行所有数据库操作,
    3. // 它是一个使用此事务的EntityManager的特殊实例,并且不要忘记在处理操作
    4. });
    • query - 执行原始SQL查询。
    1. const rawData = await connection.query(`SELECT * FROM USERS`);
    • createQueryBuilder - 创建一个查询构建器,可用于构建查询。 了解更多关于 QueryBuilder.
    1. const users = await connection.createQueryBuilder()
    2. .select()
    3. .from(User, "user")
    4. .where("user.name = :name", { name: "John" })
    5. .getMany();
    • createQueryRunner - 创建一个用于管理和使用单个真实数据库连接的查询运行器。 了解更多关于 QueryRunner.
    1. const queryRunner = connection.createQueryRunner();
    2. // 只有在调用connect执行真正的数据库连接后才能使用它的方法
    3. await queryRunner.connect();
    4. // .. 使用查询运行器并调用其方法
    5. // 重要提示 - 一旦完成,不要忘记释放查询运行器
    6. await queryRunner.release();

    ConnectionManager API

    • create - 创建一个新连接并在管理器中注册。
    1. const connection = connectionManager.create({
    2. type: "mysql",
    3. host: "localhost",
    4. port: 3306,
    5. username: "test",
    6. password: "test",
    7. database: "test"
    8. });
    • get - 获取已经创建的连接存储在管理器中的名称。
    1. const defaultConnection = connectionManager.get("default");
    2. const secondaryConnection = connectionManager.get("secondary");
    • has - 检查是否在给定的连接管理器中注册了连接。
    1. if (connectionManager.has("default")) {
    2. // ...
    3. }