typeorm动态连接操作不同数据库(nestjs)
需求: 前端输入任意数据库连接参数,切换不同数据库请求数据! controller文件 接收前端传来的配置信息
@Post('test')
testCreate(@Body() body: any ) {
return this.appService.testCreate(body);
}
service文件 路由处理函数进行配置
import { DataSource } from 'typeorm';
import { allEntities } from 'ormconfig';
async testCreate(body){
const { type, host, port, username, password, database } = body
const AppDataSource = new DataSource({
type,
host,
port,
username,
password,
database,
// 此处必须引入实体entities, 且需要注意路径
entities: allEntities,
})
try {
await AppDataSource.initialize()
// 这里 可以对整个数据库进行查询
// ①原始查询 const rawData = await AppDataSource.query(show tables
)
// return rawData
// ②manager查询 const res = await AppDataSource.manager.find(User)
// return res
// ③ const usersRepository = AppDataSource.getRepository(Users)
// const allUsers = await usersRepository.find()
// console.log('🚀 ~ file: app.service.ts:39 ~ AppService ~ testCreate ~ allUsers:', allUsers)
} catch (error) {
// console.log('🚀 ~ file: app.service.ts:26 ~ AppService ~ testCreate ~ error:', error)
return error.sqlMessage
}finally{
await AppDataSource.destroy()
}