返回

TypeORM 使用 DataSource 替代 createConnection 的终极指南

javascript

TypeORM:使用 DataSource 替代 createConnection 的指南

引言

在使用 TypeORM 与数据库交互时,你可以使用 DataSource 或 createConnection。虽然 createConnection 一直是 TypeORM 的传统方式,但 DataSource 现在被推荐使用。本指南将提供一个分步说明,指导你如何使用 DataSource 来替换 createConnection。

DataSource 与 createConnection

DataSource 是一个类,它提供了一个管理数据库连接、实体和查询执行的接口。与 createConnection 相比,DataSource 提供了更灵活和可定制的连接管理方式。

如何使用 DataSource

步骤 1:创建 DataSource 对象

创建 DataSource 对象需要你指定数据库连接详细信息,例如主机、端口、用户名和密码。你还可以配置实体的位置和同步选项。

步骤 2:初始化 DataSource

创建 DataSource 对象后,需要使用 initialize() 方法初始化它。该方法负责建立与数据库的连接。

步骤 3:存储 DataSource

初始化后,你可以将 DataSource 存储在你的应用程序中。一种方法是将其作为服务存储在 Fastify 或其他框架中。

步骤 4:使用 DataSource

存储 DataSource 后,可以使用它来与数据库交互。这包括执行查询、插入记录和更新数据。

代码示例

以下是一个使用 DataSource 的代码示例:

import { DataSource } from "typeorm";

const myDataSource = new DataSource({
  type: "postgres",
  host: "localhost",
  port: 5432,
  username: "admin",
  password: "password123!",
  database: "test",
  entities: ["src/modules/*/entity.ts"],
  synchronize: true,
});

await myDataSource.initialize();

const memos = await myDataSource.getRepository(Memo).find();

优势

使用 DataSource 具有以下优势:

  • 更灵活的连接管理: DataSource 允许你创建多个连接并根据需要管理它们。
  • 可定制的实体加载: DataSource 允许你指定要加载的实体,从而提高性能。
  • 方便的实体管理: DataSource 提供了直接访问实体管理器,这简化了实体操作。

常见问题解答

  • DataSource 与 createConnection 有什么区别? DataSource 提供了更灵活和可定制的连接管理方式。
  • 什么时候应该使用 DataSource? 对于需要更高级别的连接管理和自定义的应用程序,建议使用 DataSource。
  • DataSource 是否会取代 createConnection? 虽然 DataSource 是推荐的方式,但 createConnection 仍然可用。
  • 如何从 createConnection 迁移到 DataSource? 你可以遵循本指南中的步骤逐步完成迁移。
  • 可以在一个应用程序中同时使用 DataSource 和 createConnection 吗? 可以,但建议始终如一地使用 DataSource,以获得最佳实践和灵活性。

结论

通过使用 DataSource,你可以充分利用 TypeORM 的强大功能,并以更灵活和可定制的方式管理数据库连接。本指南提供了分步说明和代码示例,以帮助你开始使用 DataSource。通过实施本指南中的步骤,你可以提高应用程序的性能和可维护性。