#javascript #node.js #nestjs #nestjs-config
#javascript #node.js #nestjs #nestjs-config
Вопрос:
Привет, я пытаюсь создать новый модуль с подключенной новой базой данных, но он показывает мне ошибку:
//module
@Module({
imports: [CoffeesModule,
DatabaseModule.register({ // 👈 passing in dynamic values
type: 'postgres',
host: process.env.DATABASE_HOST, // database host
port: process.env.DATABASE_PORT, // database host
username: process.env.DATABASE_USER, // username
password: process.env.DATABASE_PASSWORD, // user password
database: process.env.DATABASE_NAME, // name of our database,
})],
providers: [CoffeeRatingService]
})
export class CoffeeRatingModule { }
@Module({})
export class DatabaseModule {
static register(options: ConnectionOptions): DynamicModule {
return {
module: DatabaseModule,
providers: [
{
provide: 'CONNECTION', // 👈
useValue: createConnection(options),
}
]
}
}
};
Но это покажите мне
(узел: 14394) Предупреждение о необработанном отказе: ошибка: сбой аутентификации по паролю для пользователя «globant» в Parser.parseErrorMessage (/home/globant/repos/ilovecoffie/node_modules/pg-protocol/dist/parser.js) в Parser.handlePacket (/home/globant/repos/ilovecoffie/node_modules/pg-protocol/ dist/parser.js:126:29) в Parser.parse (/home/globant/repos/ilovecoffie/node_modules/pg-protocol/dist/parser.js:39:38) в сокете. (/home/globant/repos/ilovecoffie/node_modules/pg-protocol/dist/index.js:8:42) в Socket.emit (events.js:314:20) в addChunk (_stream_readable.js:303:12) в READABLE addchunk (_stream_readable.js:279:9) в Socket.Readable.push (_stream_readable.js:218:10) в TCP.onStreamRead (internal/stream_base_commons.js:188:23)
Но настройки порта и конфигурации для подключения верны, потому что у меня уже есть соединение с типом ORM:
@Module({
imports: [
ConfigModule.forRoot(),
CoffeesModule,
TypeOrmModule.forRoot({
type: 'postgres', // type of our database
host: process.env.DATABASE_HOST, // database host
port: process.env.DATABASE_PORT, // database host
username: process.env.DATABASE_USER, // username
password: process.env.DATABASE_PASSWORD, // user password
database: process.env.DATABASE_NAME, // name of our database,
autoLoadEntities: true, // models will be loaded automatically (you don't have to explicitly specify the entities: [] array)
synchronize: true, // your entities will be synced with the database (ORM will map entity definitions to corresponding SQL tabled), every time you run the application (recommended: disable in the production)
}),
CoffeeRatingModule,
DatabaseModule,],
controllers: [
AppController],
providers: [AppService],
})
export class AppModule { }
И его работа:
Комментарии:
1. Возвращает ли «createConnection(…)» обещание? Если это так, возможно, вам потребуется переключить «useValue: createConnection(параметры)» на «useFactory: async () => ожидать создания подключения (параметры)»
2. Как эти параметры передаются вашему драйверу базы данных? Является ли это оболочкой для TypeORM? Как
process.env
заполняется? Я вижу, вы используете aConfigModule
, есть ли причина, по которой вы также не используете aConfigService
?3. Я предполагаю, что проблема связана с официальным курсом NestJS. У меня там была такая же проблема. Спасибо за решение.