Рубрики
Без рубрики

Конфигурация базы данных Nestjs и Texorm

После некоторых начальных проблем у меня была с этой темой, я решил провести некоторое время, чтобы посмотреть в разные … Помечено JavaScript, Nestjs, впринимает.

После некоторых начальных проблем у меня была с этой темой, я решил провести некоторое время, чтобы посмотреть в разные варианты. Вот обзор результатов:

Это самый очевидный способ настроить базу данных. Просто напишите параметры (URL, имя пользователя, …) в коде, где вы импортируете Типрм Отказ

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: 'root',
      database: 'test',
      entities: [],
      synchronize: true,
    }),
  ],
})
export class AppModule {}

С этим много проблем. Вы не можете легко изменить это в развернутом приложении, он охватывает ваш app.module.ts Файл и если вы совершаете это на публичное хранилище, вы делаете данные доступа к базу данных. Также, если вы всегда сложные конфигурации кода, как это, вы можете в конечном итоге иметь их по всему месту в вашем коде. Поэтому, хотя это нормально для быстрого теста в вашей среде разработки, я бы не рекомендовал использовать это намного больше, чем это.

Tourmm предлагает возможность пройти параметры конфигурации для одной или нескольких баз данных, использующих ormconfig.json Файл Отказ

Этот файл включает в себя все соответствующие параметры конфигурации. В моем случае это было не так много:

{
    "type": "mongodb",
    "url": "mongodb+srv://:@some.subdomains.of.mongodb.net/"
}

При использовании ormconfig.json. , вы не должны ставить какие-либо варианты в app.module.ts где вы импортируете вход.

Настройка входа. Этот способ – это чистое решение, у вас есть один файл для подключения к базе данных (ы), и вы можете настроить более одной базы данных в этом файле. Недостаток в том, что вы должны иметь этот дополнительный файл. Таким образом, в некоторых средах, где вы не сможете получить доступ к всем файлам приложения, изменяя эту базу данных может быть сложной.

Как описано здесь Можно настроить входной момент, используя переменные среды. Tourmm предлагает список разных переменных для использования в этом случае. Это использует либо .env.env. -ФИЛЬ или фактические переменные среды.

Ограничение этого метода в том, что можно только настроить одну базу данных. Но если вам нужна только одна база данных в вашем приложении, это хороший способ быстро настроить вход в зависимости от окружающей среды.

Это сочетает в себе асинхронную конфигурацию, описанную в Nestjs Документация С модулем конфигурации из Stresjs. , что поддерживает при получении ценностей из переменных среды.

По сути, вы должны создать сервис, который может быть введен в импорт в экземпляре, и это реализует Типрмоптенционные продукты интерфейс. Значения этой службы обеспечивают в некорре, получены из модуля Configure Config.

Для моего MongoDB это выглядит так:

import { Injectable } from "@nestjs/common";
import { ConfigService } from "@nestjs/config";
import { TypeOrmModuleOptions, TypeOrmOptionsFactory } from "@nestjs/typeorm";

@Injectable()
export class MongoDBConfigService implements TypeOrmOptionsFactory {

    constructor(private configService: ConfigService) {}

    createTypeOrmOptions(): TypeOrmModuleOptions {
        return {
            type: 'mongodb',
            url: this.configService.get('MONGODB_URL'),
            username: this.configService.get('MONGODB_USER'),
            password: this.configService.get('MONGODB_PASSWORD'),
    };
  }
}

Вы можете создать такую услугу за базу данных, необходимую вам. Используя его, чтобы настроить вход в ваш app.module.ts будет выглядеть так:

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true
    }),
    TypeOrmModule.forRootAsync({
      useClass: MongoDBConfigService,
      inject: [MongoDBConfigService]
    })
  ],
  controllers: [AppController],
  providers: [AppService, MongoDBConfigService],
})

export class AppModule {}

Преимущество этого метода, состоит в том, что вы можете настроить несколько баз данных из среды приложения и сохранить ваше приложение. Module.ts более или менее чистым. Нижний вид есть, требуется еще несколько шагов.

Так как я новичок в Nestjs и впринимаю, я пишу то, что я учусь. Так что, если я пропустил метод, чтобы сделать это или что-то, что я написал неверно, пожалуйста, дайте мне знать!

Оригинал: “https://dev.to/raphael_haecker/nestjs-and-typeorm-database-configuration-15ob”