Nestjs js TypeORM如何根据标头在运行时切换数据库连接
我有两个数据库,并希望根据http请求发送的头使用其中一个数据库Nestjs js TypeORM如何根据标头在运行时切换数据库连接,nestjs,typeorm,Nestjs,Typeorm,我有两个数据库,并希望根据http请求发送的头使用其中一个数据库 有人知道如何在Nest中动态切换TypeForm连接吗?谢谢 通过nestjs使用多个数据库非常容易。官方文件对设置它们有很好的解释 首先,您可以在AppModule中注册数据库 const defaultOptions = { type: 'postgres', port: 5432, username: 'user', password: 'password', database: 'db', sync
有人知道如何在Nest中动态切换TypeForm连接吗?谢谢 通过nestjs使用多个数据库非常容易。官方文件对设置它们有很好的解释 首先,您可以在AppModule中注册数据库
const defaultOptions = {
type: 'postgres',
port: 5432,
username: 'user',
password: 'password',
database: 'db',
synchronize: true,
};
@Module({
imports: [
TypeOrmModule.forRoot({
...defaultOptions,
name: 'db_1',
host: 'host_1',
entities: [Entity1],
}),
TypeOrmModule.forRoot({
...defaultOptions,
name: 'db_2',
host: 'host_2',
entities: [Entity2],
})
],
})
export class AppModule {}
这样,您就可以插入连接并在它们之间进行选择
@Module({
imports: [
TypeOrmModule.forFeature([Entity1], 'db_1'),
TypeOrmModule.forFeature([Entity2], 'db_2'),
],
})
export class AppModule {}
@Injectable()
导出类PersonService{
建造师(
@注入存储库('db_1')
私有只读repo_1:存储库,
@注入存储库('db_2')
私有只读repo_2:存储库,
) {}
公共fetchData(db_1:boolean){
if(db_1){
返回此.repo_1.find();
}
返回此.repo_2.find();
}
}
尝试使用中间件解析值,并请求作用域服务在运行时选择正确的连接,如下所述
@Injectable()
export class PersonService {
constructor(
@InjectRepository('db_1')
private readonly repo_1: Repository<Entity1>,
@InjectRepository('db_2')
private readonly repo_2: Repository<Entity2>,
) {}
public fetchData(db_1: boolean) {
if (db_1) {
return this.repo_1.find();
}
return this.repo_2.find();
}
}