Обзор
-
TypeORMэто декоратор использования, правильноTypeScriptОчень хорошо поддерживаемая структура ORM. существуетNestJS, через@nestjs/typeorm, используйте декоратор элегантноTypeORM.
Пример использования
-
первый в
config/database.tsЭкспорт конфигурации подключения к базе данных:export const DatabaseConfig = { type: 'mysql', host: '127.0.0.1', port: 3306, username: 'root', password: '123456', database: 'example', entities: [__dirname + '/**/*.entity{.ts,.js}'], synchronize: false, migrations: ['database/migration/**/*.ts'], cli: { migrationsDir: 'database/migration/default', }, } -
затем в
ormconfig.tsИмпортировать настройки, роль использоватьtypeorm migration:generateЖдатьTypeOrmЭтот файл будет использоваться в команде в качестве конфигурации для подключения к базе данных. существуетTypeOrmВ официальной документации упоминается, что вы можете использоватьormconfig.json,ormconfig.jsилиormconfig.tsспособ установить соединение с базой данных, здесь мы выбираем более гибкую форму файла ts.import { DataBaseConfig } from 'config/database' module.exports = DataBaseConfigПримечание. Убедитесь, что файл ormconfig.ts также
tsconfig.jsonОбъем компиляции:{ "include": [ "ormconfig.ts", ... ], ... } -
существует
app.module.tsимпортировать настройки, использоватьTypeOrmModule.forRoot(), существуетNestJSкадр, подключиться к базе данных. после,ConnectionиEntityManagerможно вставить в программу. Как указано в официальной документации, если вormconfig.jsonНапишите конфигурацию какforRoot()Параметры по умолчанию, так как мы используем ts файл, нам нужно вручную импортировать конфигурацию)import { Module } from '@nestjs/common' import { TypeOrmModule } from '@nestjs/typeorm' import { DataBaseConfig } from 'config/database' @Module({ imports: [TypeOrmModule.forRoot(DataBaseConfig)], }) export class ApplicationModule {} -
В конкретном модуле через следующий код под текущим модулем прописать
Repository. (пожалуйста, сначала создайте свой собственный./example.entityдокумент)import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { Example } from './example.entity'; @Module({ imports: [TypeOrmModule.forFeature([Example])], }) export class ExampleModule {} -
Впоследствии его можно использовать в виде внедрения зависимостей в сервисы и контроллеры и т. д.
Repository.import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { Example } from './example.entity'; @Injectable() export class ExampleService { constructor( @InjectRepository(Example) public readonly repo: Repository<Example>, ) {} findAll(): Promise<Example[]> { return this.exampleRepo.find(); } }
Рекомендуемая практика
- Рекомендуется записывать конфигурацию подключения к базе данных в файл .env вместо использования
ormconfig.jsonПуть. Преимущество этого заключается в том, что конфиденциальная информация управляется в .env. Кроме того, также удобно расширять подключение к нескольким базам данных. Как читать конфигурационный файл подробно описано в другой статье[NestJS] Информация о конфигурации и переменные среды