API DataSource
Неофициальный Бета-перевод
Эта страница переведена PageTurner AI (бета). Не одобрена официально проектом. Нашли ошибку? Сообщить о проблеме →
options- Параметры, использованные для создания этого источника данных. Подробнее в разделе Параметры источника данных.
const dataSourceOptions: DataSourceOptions = dataSource.options
isInitialized- Указывает, был ли инициализированDataSourceи установлено ли соединение (или пул соединений) с базой данных.
const isInitialized: boolean = dataSource.isInitialized
driver- Базовый драйвер базы данных, используемый в этом источнике данных.
const driver: Driver = dataSource.driver
manager-EntityManager, используемый для работы с сущностями. Подробнее об Entity Manager и Репозиториях.
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()