# DataSource API

  • options - Options used to create this dataSource. Learn more about DataSourceOptions.
const dataSourceOptions: DataSourceOptions = dataSource.options
1
  • isInitialized - Indicates if DataSource was initialized and initial connection / connection pool with database was established or not.
const isInitialized: boolean = dataSource.isInitialized
1
  • driver - Underlying database driver used in this dataSource.
const driver: Driver = dataSource.driver
1
const manager: EntityManager = dataSource.manager
// you can call manager methods, for example find:
const users = await manager.find()
1
2
3
  • mongoManager - MongoEntityManager used to work with entities for mongodb data source. For more information about MongoEntityManager see MongoDB documentation.
const manager: MongoEntityManager = dataSource.mongoManager
// you can call manager or mongodb-manager specific methods, for example find:
const users = await manager.find()
1
2
3
  • initialize - Initializes data source and opens connection pool to the database.
await dataSource.initialize()
1
  • destroy - Destroys the DataSource and closes all database connections. Usually, you call this method when your application is shutting down.
await dataSource.destroy()
1
  • synchronize - Synchronizes database schema. When synchronize: true is set in data source options it calls this method. Usually, you call this method when your application is starting.
await dataSource.synchronize()
1
  • dropDatabase - Drops the database and all its data. Be careful with this method on production since this method will erase all your database tables and their data. Can be used only after connection to the database is established.
await dataSource.dropDatabase()
1
  • runMigrations - Runs all pending migrations.
await dataSource.runMigrations()
1
  • undoLastMigration - Reverts last executed migration.
await dataSource.undoLastMigration()
1
  • hasMetadata - Checks if metadata for a given entity is registered. Learn more about Entity Metadata.
if (dataSource.hasMetadata(User))
    const userMetadata = dataSource.getMetadata(User)
1
2
  • getMetadata - Gets EntityMetadata of the given entity. You can also specify a table name and if entity metadata with such table name is found it will be returned. Learn more about Entity Metadata.
const userMetadata = dataSource.getMetadata(User)
// now you can get any information about User entity
1
2
  • getRepository - Gets Repository of the given entity. You can also specify a table name and if repository for given table is found it will be returned. Learn more about Repositories.
const repository = dataSource.getRepository(User)
// now you can call repository methods, for example find:
const users = await repository.find()
1
2
3
  • getTreeRepository - Gets TreeRepository of the given entity. You can also specify a table name and if repository for given table is found it will be returned. Learn more about Repositories.
const repository = dataSource.getTreeRepository(Category)
// now you can call tree repository methods, for example findTrees:
const categories = await repository.findTrees()
1
2
3
  • getMongoRepository - Gets MongoRepository of the given entity. This repository is used for entities in MongoDB dataSource. Learn more about MongoDB support.
const repository = dataSource.getMongoRepository(User)
// now you can call mongodb-specific repository methods, for example createEntityCursor:
const categoryCursor = repository.createEntityCursor()
const category1 = await categoryCursor.next()
const category2 = await categoryCursor.next()
1
2
3
4
5
  • transaction - Provides a single transaction where multiple database requests will be executed in a single database transaction. Learn more about Transactions.
await dataSource.transaction(async (manager) => {
    // NOTE: you must perform all database operations using given manager instance
    // its a special instance of EntityManager working with this transaction
    // and don't forget to await things here
})
1
2
3
4
5
  • query - Executes a raw SQL query.
const rawData = await dataSource.query(`SELECT * FROM USERS`)
1
  • createQueryBuilder - Creates a query builder, which can be used to build queries. Learn more about QueryBuilder.
const users = await dataSource
    .createQueryBuilder()
    .select()
    .from(User, "user")
    .where("user.name = :name", { name: "John" })
    .getMany()
1
2
3
4
5
6
  • createQueryRunner - Creates a query runner used to manage and work with a single real database dataSource. Learn more about QueryRunner.
const queryRunner = dataSource.createQueryRunner()

// you can use its methods only after you call connect
// which performs real database connection
await queryRunner.connect()

// .. now you can work with query runner and call its methods

// very important - don't forget to release query runner once you finished working with it
await queryRunner.release()
1
2
3
4
5
6
7
8
9
10