Então, você decidiu lidar com as configurações do aplicativo? Movimento ousado. Vamos garantir que você não estrague tudo.
Neste app, temos vários arquivos de configuração para gerenciar nossas conexões com bancos de dados e outros serviços. Esses arquivos de configuração estão armazenados no diretório src/config/database/
, e eles lidam com a integração com MySQL, MongoDB e Redis. Aqui está o que cada arquivo faz e como é usado.
Este arquivo contém a configuração para conectar-se ao MongoDB. Ele usa o ConfigService
para obter os detalhes da conexão a partir das variáveis de ambiente.
import { ConfigService } from '@nestjs/config'
import { MongooseModuleOptions } from '@nestjs/mongoose'
export const mongoConfig = (configService: ConfigService): MongooseModuleOptions => ({
uri: `mongodb://${configService.get<string>('MONGO_INITDB_ROOT_USERNAME')}:${configService.get<string>('MONGO_INITDB_ROOT_PASSWORD')}@${configService.get<string>('MONGO_HOST')}:${configService.get<number>('MONGO_PORT')}/${configService.get<string>('MONGO_DB')}`,
})
No arquivo main.ts
, a função connectMongoDatabase
é chamada para estabelecer a conexão com o MongoDB.
import { connectMongoDatabase } from './config/database/mongo.database.config'
async function bootstrap() {
const app = await NestFactory.create(AppModule)
connectMongoDatabase(app)
// ...
}
Este arquivo configura a conexão MySQL usando o ConfigService
para buscar as credenciais nas variáveis de ambiente.
import { ConfigService } from '@nestjs/config'
import { TypeOrmModuleOptions } from '@nestjs/typeorm'
import { join } from 'path'
export const mysqlConfig = (configService: ConfigService): TypeOrmModuleOptions => ({
type: 'mysql',
host: configService.get<string>('MYSQL_HOST', 'localhost'),
port: configService.get<number>('MYSQL_PORT', 3306),
username: configService.get<string>('MYSQL_USER', 'root'),
password: configService.get<string>('MYSQL_PASSWORD', 'password'),
database: configService.get<string>('MYSQL_DATABASE', 'database_name'),
synchronize: configService.get<boolean>('MYSQL_SYNCHRONIZE', true),
entities: [join(__dirname, '/../**/entity/*.ts'), join(__dirname, '/../**/entity/*.js')],
})
A função connectMySqlDatabase
é chamada no main.ts
para iniciar a conexão com o MySQL.
import { connectMySqlDatabase } from './config/database/mysql.database.config'
async function bootstrap() {
const app = await NestFactory.create(AppModule)
await connectMySqlDatabase(app)
// ...
}
A configuração do Redis é tratada aqui. Ele obtém os detalhes da conexão usando o ConfigService
e configura o cliente Redis.
import { ConfigService } from '@nestjs/config'
import Redis, { RedisOptions } from 'ioredis'
export const redisConfig = (configService: ConfigService): RedisOptions => ({
host: configService.get<string>('REDIS_HOST', 'localhost'),
port: configService.get<number>('REDIS_PORT', 6379),
password: configService.get<string>('REDIS_PASSWORD', ''),
db: configService.get<number>('REDIS_DATABASE', 0),
})
A função connectRedisDatabase
é usada no main.ts
para configurar e conectar o Redis.
import { connectRedisDatabase } from './config/database/redis.database.config'
async function bootstrap() {
const app = await NestFactory.create(AppModule)
connectRedisDatabase(app.get(ConfigService))
// ...
}
Os arquivos de configuração gerenciam os detalhes de conexão para MongoDB, MySQL e Redis. Todos eles dependem de variáveis de ambiente fornecidas no arquivo .env
e são chamados no main.ts
para configurar as conexões. Certifique-se de atualizar seu arquivo .env
com as credenciais corretas e executar docker-compose up
para iniciar tudo.
Olha como ficou bonitinho a aplicação rodando com as bases de dados conectadas