Перейти к основному содержанию

API DataSource

Неофициальный Бета-перевод

Эта страница переведена PageTurner AI (бета). Не одобрена официально проектом. Нашли ошибку? Сообщить о проблеме →

const dataSourceOptions: DataSourceOptions = dataSource.options
  • isInitialized - Указывает, был ли инициализирован источник данных (DataSource) и установлено ли первоначальное соединение/пул соединений с базой данных.
const isInitialized: boolean = dataSource.isInitialized
  • driver - Базовый драйвер базы данных, используемый в этом источнике данных.
const driver: Driver = dataSource.driver
const manager: EntityManager = dataSource.manager
// you can call manager methods, for example find:
const users = await manager.find()
  • mongoManager - MongoEntityManager, используемый для работы с сущностями в источнике данных MongoDB. Дополнительную информацию о MongoEntityManager см. в документации по MongoDB.
const manager: MongoEntityManager = dataSource.mongoManager
// you can call manager or mongodb-manager specific methods, for example find:
const users = await manager.find()
  • initialize - Инициализирует источник данных и открывает пул соединений с базой данных.
await dataSource.initialize()
  • destroy - Уничтожает источник данных (DataSource) и закрывает все соединения с базой данных. Обычно этот метод вызывается при завершении работы приложения.
await dataSource.destroy()
  • synchronize - Синхронизирует схему базы данных. Вызывается автоматически при установке synchronize: true в параметрах источника данных. Обычно этот метод вызывается при запуске приложения.
await dataSource.synchronize()
  • dropDatabase - Удаляет базу данных со всеми её данными. Будьте осторожны при использовании этого метода в production, так как он полностью удалит все таблицы и данные. Может использоваться только после установки соединения с базой данных.
await dataSource.dropDatabase()
  • runMigrations - Выполняет все ожидающие миграции.
await dataSource.runMigrations()
  • undoLastMigration - Отменяет последнюю выполненную миграцию.
await dataSource.undoLastMigration()
  • hasMetadata - Проверяет, зарегистрированы ли метаданные для указанной сущности.
if (dataSource.hasMetadata(User))
const userMetadata = dataSource.getMetadata(User)
  • getMetadata - Получает EntityMetadata для указанной сущности. Можно также указать имя таблицы, и если метаданные сущности с таким именем таблицы будут найдены, они будут возвращены.
const userMetadata = dataSource.getMetadata(User)
// now you can get any information about User entity
  • getRepository - Получает Repository для указанной сущности. Можно также указать имя таблицы, и если репозиторий для этой таблицы будет найден, он будет возвращён. Подробнее о Репозиториях.
const repository = dataSource.getRepository(User)
// now you can call repository methods, for example find:
const users = await repository.find()
  • getTreeRepository - Получает TreeRepository для указанной сущности. Можно также указать имя таблицы, и если репозиторий для этой таблицы будет найден, он будет возвращён. Подробнее о Репозиториях.
const repository = dataSource.getTreeRepository(Category)
// now you can call tree repository methods, for example findTrees:
const categories = await repository.findTrees()
  • getMongoRepository - Получает MongoRepository для указанной сущности. Этот репозиторий используется для сущностей в источниках данных MongoDB. Подробнее о поддержке MongoDB.
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()
  • transaction - Предоставляет единую транзакцию, в рамках которой несколько запросов к базе данных будут выполнены как одна операция. Подробнее о Транзакциях.
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
})
  • query - Выполняет сырой SQL-запрос.
const rawData = await dataSource.query(`SELECT * FROM USERS`)

// You can also use parameters to avoid SQL injection
// The syntax differs between the drivers

// aurora-mysql, better-sqlite3, capacitor, cordova,
// expo, mariadb, mysql, nativescript, react-native,
// sap, sqlite, sqljs
const rawData = await dataSource.query(
"SELECT * FROM USERS WHERE name = ? and age = ?",
["John", 24],
)

// aurora-postgres, cockroachdb, postgres
const rawData = await dataSource.query(
"SELECT * FROM USERS WHERE name = $1 and age = $2",
["John", 24],
)

// oracle
const rawData = await dataSource.query(
"SELECT * FROM USERS WHERE name = :1 and age = :2",
["John", 24],
)

// spanner
const rawData = await dataSource.query(
"SELECT * FROM USERS WHERE name = @param0 and age = @param1",
["John", 24],
)

// mssql
const rawData = await dataSource.query(
"SELECT * FROM USERS WHERE name = @0 and age = @1",
["John", 24],
)
  • sql - Выполняет сырой SQL-запрос с использованием шаблонных литералов.
const rawData =
await dataSource.sql`SELECT * FROM USERS WHERE name = ${"John"} and age = ${24}`

Подробнее об использовании синтаксиса SQL-тегов.

  • createQueryBuilder - Создаёт конструктор запросов (query builder), который может использоваться для построения запросов. Подробнее о QueryBuilder.
const users = await dataSource
.createQueryBuilder()
.select()
.from(User, "user")
.where("user.name = :name", { name: "John" })
.getMany()
  • createQueryRunner - Создаёт исполнитель запросов (query runner), используемый для управления единым реальным соединением с базой данных. Подробнее об исполнителе запросов.
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()