typeorm的根方法

src/index.ts

//获取元数据参数存储对象
export function getMetadataArgsStorage(): MetadataArgsStorage {
    //获取全局作用域
    const globalScope = PlatformTools.getGlobalVariable();
    //初始化元数据存储对象
    if (!globalScope.typeormMetadataArgsStorage)
        globalScope.typeormMetadataArgsStorage = new MetadataArgsStorage();
    return globalScope.typeormMetadataArgsStorage;
}

//获取指定名称连接的连接选项,先从配置文件中加载所有连接选项,然后查找指定名称选项对象
export async function getConnectionOptions(connectionName: string = "default"): Promise {
    return new ConnectionOptionsReader().get(connectionName);
}

//从容器获取连接管理器
export function getConnectionManager(): ConnectionManager {
    return getFromContainer(ConnectionManager);
}

//创建连接方法,使用选项对象创建,选项中type指明链接类型
export async function createConnection(options?: ConnectionOptions): Promise {
    //选项不存在获取默认选项
    if (!options)
        //获取default连接的连接选项
        options = await getConnectionOptions();
        //连接管理器创建链接,然后连接,这一步很重要,获取实体元数据都是在connect这一步
    return getConnectionManager().create(options).connect();
}

//创建多个连接
export async function createConnections(options?: ConnectionOptions[]): Promise {
    if (!options)
        //获取所有连接选项数组
        options = await new ConnectionOptionsReader().all();
        //创建连接对象数组
    const connections = options.map(options => getConnectionManager().create(options));
    //连接
    return PromiseUtils.runInSequence(connections, connection => connection.connect());
}

//根据连接名获取连接,默认为default
export function getConnection(connectionName: string = "default"): Connection {
    //从连接管理器获取连接
    return getConnectionManager().get(connectionName);
}

//获取指定连接名的连接的管理器
export function getManager(connectionName: string = "default"): EntityManager {
    return getConnectionManager().get(connectionName).manager;
}

//获取MongoDb实体管理器
export function getMongoManager(connectionName: string = "default"): MongoEntityManager {
    return getConnectionManager().get(connectionName).manager as MongoEntityManager;
}

//获取sqljs实体管理器你
export function getSqljsManager(connectionName: string = "default"): SqljsEntityManager {
    return getConnectionManager().get(connectionName).manager as SqljsEntityManager;
}

//获取指定连接中指定实体类型的仓库,默认从default连接中获取
export function getRepository(entityClass: ObjectType|string, connectionName: string = "default"): Repository {
    return getConnectionManager().get(connectionName).getRepository(entityClass);
}

//获取树状仓库
export function getTreeRepository(entityClass: ObjectType|string, connectionName: string = "default"): TreeRepository {
    return getConnectionManager().get(connectionName).getTreeRepository(entityClass);
}

//获取定制仓库
export function getCustomRepository(customRepository: ObjectType, connectionName: string = "default"): T {
    return getConnectionManager().get(connectionName).getCustomRepository(customRepository);
}

//获取Mongodb仓库
export function getMongoRepository(entityClass: ObjectType|string, connectionName: string = "default"): MongoRepository {
    return getConnectionManager().get(connectionName).getMongoRepository(entityClass);
}


index.ts文件中暴露出来的根方法主要为获取MetadataArgsStorage、ConnectionOptions、ConnectionManager、Connection、Repository这五种对象的方法

MetadataArgsStorage:实体元数据存储,所有连接的实体的元数据都存储在这个对象内,这个对象存储在全局

ConnectionOptions:连接选项,从各种文件下加载,env、js、json、yml、xml等等

ConnectionManager:连接管理器,大部分连接采用一个管理器,有些特殊类型数据库采用自己的管理器

Connection:一个数据库连接,内部可能采用连接池来实现

Repository:实体仓库,调用指定实体的增删改查方法

你可能感兴趣的:(typeorm)