使用数据源(DataSource)
什么是 DataSource
只有在设置了 DataSource
后,才能与数据库进行交互。
TypeORM 的 DataSource
包含了数据库连接的设置,并且根据您使用的关系型数据库管理系统(RDBMS)建立初始的数据库连接或连接池。
为了建立初始的连接或连接池,您必须调用 DataSource
实例的 initialize
方法。
调用 destroy
方法会断开连接(关闭连接池中的所有连接)。
通常,在应用程序启动时,调用 DataSource
实例的 initialize
方法,然后在完全使用完数据库后再调用 destroy
方法。
创建新的 DataSource
要创建一个新的 DataSource
实例,您需要通过调用 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("数据源已初始化!")
})
.catch((err) => {
console.error("数据源初始化时出错", err)
})
将 AppDataSource
作为全局变量进行导出是一个好主意,因为您将在整个应用程序中使用这个实例。
DataSource
接受 DataSourceOptions
,而这些选项根据您使用的数据库 type
不同而有所不同。
对于不同的数据库类型,您可以指定不同的选项。
您可以在应用程序中定义任意数量的数据源,例如:
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
一旦设置了您的 DataSource
,您可以在应用程序的任何地方使用它,例如:
import { AppDataSource } from "./app-data-source"
import { User } from "../entity/User"
export class UserController {
@Get("/users")
getAll() {
return AppDataSource.manager.find(User)
}
}
使用 DataSource
实例,您可以使用您的实体执行数据库操作,特别是使用 .manager
和 .getRepository()
属性。
有关更多信息,请参阅 实体管理器和仓库 文档。