跳转到主要内容

使用数据源(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() 属性。 有关更多信息,请参阅 实体管理器和仓库 文档。