什么是数据源?
只有在设置了DataSource.TypeORMDateSource保存您的数据库连接设置,并根据您使用的RDBMS(关系数据库管理系统)建立初始的数据库链接或连接池。 为了建立初始链接/链接池,您必须调用实例initialize的方法DataSource。 destroy调用方法时会断开连接(关闭池中的所有链接)。
通常,您在应用程序引导程序上调用实例 initialize的方法DataSource,并destoy在完全完成数据库的使用调用该实例的方法。实际上,如果您正在为站点构建后端并且您的后端服务始终保持运行,您将不会使用到destory数据源。
创建一个新的数据源?
要创建新实例,必须通过调用并分配给你将在应用程序中使用的全局变量来初始化其构造函数,new DataSource。
import { DataSource } from "typeorm"
const AppDataSource = new DataSource({
type: "mysql",
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test",
})
AppDataSource.initialize().then(() => {
console.log("Data Source has been initialized!")
}).catch((err) => {
console.error("Error during Data Source initialization", err)
})
通过导出使AppDataSource在全球可用是一个好主意,因为您将在整个应用程序中使用这个实例。 DataSource接受DataSourceOptions,这些选项因您使用的数据库类型而异。对于不同的数据库类型,可以指定不同的选项。 您可以根据应用程序的需要定义许多数据源,例如:
import { DataSource } from "typeorm"
const MysqlDataSource = new DataSource({
type: "mysql",
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test",
entities: [
// ....
],
})
const PostgresDataSource = new DataSource({
type: "postgres",
host: "localhost",
port: 5432,
username: "test",
password: "test",
database: "test",
entities: [
// ....
],
})
如何使用数据源?
设置后DataSource,您可以在应用程序中的任何位置使用它,例如:
import { AppDataSource } from "./app-data-source"
import { User } from "../entity/User"
export class UserController {
@Get("/users")
getAll() {
return AppDataSource.manager.find(User)
}
}