我想解释一下我想做什么。 我想从数据库获取数据库配置并连接到它。最好举个例子更好理解。我有 3 个数据库 A、B、C 在 DB A 中存储 DB B 和 C 配置信息,例如用户名、密码和 dbName(BD B 和 BD C 的用户名等)。我在数据库(B 和 C)中都有用户,例如 David 身份验证凭据在数据库 B 中,而 Justin 身份验证凭据在数据库 C 中,当 David 想要对后端进行身份验证时应该连接到 DB B,然后获取他的凭据
所以我写了一些代码,但出现错误
我写的代码:
<块引用>在 app.module.ts 中
<块引用>UsersModule 有一个实体用于存储 DB 配置 => DB A PlayersModule 有一个用于存储用户凭据的实体 => DB B(David auth 凭据保存在此处)
@Module({
imports: [
TypeOrmModule.forRoot(),
TypeOrmModule.forRootAsync({
useClass: DynamicDbConfigService,
}),
ConfigModule.forRoot(),
UsersModule,
PlayersModule,
DynamicDbConfigModule,
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
<块引用>
这是ormconfig js文件
module.exports = {
name: 'default',
type: 'mysql',
host: process.env.DB_HOST,
port: process.env.DB_PORT,
username: process.env.DB_USERNAME,
password: process.env.BD_PASSWORD,
database: process.env.DB_NAME,
entities: ['dist/**/*.entity{.ts,.js}'],
synchronize: true,
};
<块引用>
我有两个文件用于动态获取数据库配置
<块引用>在动态-db-config.service.ts
<块引用>我使用服务 (UsersService) 根据 request.params(发送数据库名称)获取数据库凭据
@Injectable({ scope: Scope.REQUEST })
export class DynamicDbConfigService implements TypeOrmOptionsFactory {
constructor(
@Inject(REQUEST) private readonly request: Request,
private usersService: UsersService,
) {}
createTypeOrmOptions(
connectionName?: string,
): Promise<TypeOrmModuleOptions> | TypeOrmModuleOptions {
return this.usersService.getServerDetail(this.request.params.serverName);
}
}
<块引用>
dynamic-db-config.module.ts
@Module({
imports: [UsersModule],
providers: [DynamicDbConfigService],
exports: [DynamicDbConfigService],
})
export class DynamicDbConfigModule {}
<块引用>
users.service.ts
async getServerDetail(serverName): Promise<TypeOrmModuleOptions> {
const dbDetail = await this.userRepository.findOne({
where: { dbName: serverName },
});
return {
name: 'dynamicDB',
database: dbDetail.dbName,
host: 'localhost',
username: 'bla bla bla',
password: 'bla bla bla',
type: 'mysql',
port: 3306,
};
}
<块引用>
这是 users.module.ts
@Module({
imports: [TypeOrmModule.forFeature([User])],
controllers: [UsersController],
providers: [UsersService],
exports: [UsersService],
})
export class UsersModule {}
因此,当我想运行此代码时,在 dynamic-db-config.service.ts 中出现 usersService 错误
<块引用>错误是:
```
Error: Nest can't resolve dependencies of the DynamicDbConfigService (REQUEST, ?). Please make sure that the argument UsersService at index [1] is available in the TypeOrmCoreModule context.
Potential solutions:
- If UsersService is a provider, is it part of the current TypeOrmCoreModule?
- If UsersService is exported from a separate @Module, is that module imported within TypeOrmCoreModule?
@Module({
imports: [ /* the Module containing UsersService */ ]`enter code here`
})
```
我哪里做错了?