介绍
TypeORM 是一个非常流行的 TypeScript 编写的 Object Relational Mapping (ORM) 框架,用来在 NodeJS 中操作 SQL 和 NoSQL 数据库,包括 MySQL、MariaDB、PostgreSQL、SQLite、MS SQL Server、Oracle、WebSQL 等。
TypeORM 具有良好的可扩展性和可定制性,能够轻松地适应各种不同的数据模型和数据访问需求。同时,TypeORM 还提供了丰富的文档和示例,便于开发者学习和使用。
在本文中,我们将详细介绍 TypeORM 的使用方法,并结合示例代码,帮助大家更好地理解和掌握这个优秀的 ORM 框架。
安装
首先,我们需要在项目中安装 TypeORM。使用 npm 命令即可完成安装:
npm install typeorm reflect-metadata mysql # MySQL 数据库驱动,可根据需要替换为其他数据库驱动
安装成功后,我们需要在代码中引入 TypeORM 和相关的依赖:
-- -------------------- ---- ------- ------ - ---------------- - ---- ---------- ------ - ---- - ---- ------------------ -- -------- ---- -- ------ ------------------- -- ------- ------------------ ----- -------- -- ----- ----- ------------ -- ----- ----- ----- -- ----- --------- ------- -- ------ --------- --------- -- ----- --------- ------- -- ----- --------- ------- ------------ ----- -- --------- -------- ------ -- ------ -- ----------- ------------ -- - ----------------------- ----- ------------------- -- ------------ -- - ---------------------- ------------- ---
数据库连接配置
在上面的示例代码中,我们创建了一个 MySQL 数据库连接。TypeORM 支持多种不同的数据库类型,可以根据自己的需要进行选择。例如,如果要连接 PostgreSQL 数据库,只需要将 type
参数设置为 "postgres"
,其他参数保持不变。
然后,我们指定了连接数据库的相关配置信息,包括数据库主机、端口、用户名、密码、数据库名称等。这些信息应该根据自己实际的情况进行修改。
在数据库连接配置中,我们还指定了一个 entities
属性,用来定义数据库实体类。实体类用来映射数据库表结构,是 TypeORM 的核心概念之一。在后面的示例代码中,我们将详细介绍如何定义和使用实体类。
最后,我们还设置了一些其他的配置参数,包括自动同步数据库结构(synchronize
)和关闭日志输出(logging
)等。这些参数也可以根据需要进行修改。
定义实体类
接下来,我们需要定义一个 User 实体类。示例代码如下:
-- -------------------- ---- ------- ------ - ------- ------- ---------------------- - ---- ---------- --------- ------ ----- ---- - ------------------------- --- ------- --------- ----- ------- -
在上面的代码中,我们使用 @Entity()
装饰器来表示这是一个数据库实体类。@PrimaryGeneratedColumn()
装饰器表示这是一个自动生成的主键列。@Column()
装饰器表示这是一个普通列。
在实体类中,我们可以定义多个列,以及各种关联关系。TypeORM 支持多种关联关系,包括一对一、一对多、多对多等。这些关联关系需要根据具体的业务需求进行定义和使用。
数据访问
在我们定义了数据库实体类后,就可以通过实体类来访问数据库了。TypeORM 提供了多种数据访问方式,包括:
- 使用查询语言来手动编写 SQL 语句,然后通过
query
方法执行。 - 使用 QueryBuilder 来编写类型安全的查询语句。
- 使用 Repository 对象来进行增删改查等操作。
在接下来的示例代码中,我们将演示如何使用 Repository 对象进行增删改查等操作。
首先,我们需要获取一个实体类的 Repository 对象:
import { getRepository } from "typeorm"; import { User } from "./entities/User"; const userRepository = getRepository(User);
然后,就可以通过该 Repository 对象来进行增删改查等操作了。
新增数据
const newUser = new User(); newUser.name = "test"; await userRepository.save(newUser);
在上面的代码中,我们创建了一个新的 User 对象,并设置了其 name 属性。然后,使用 save
方法将该对象保存到数据库中。TypeORM 会自动将其转换为对应的 SQL 语句并执行。
查询数据
const users = await userRepository.find(); console.log(users);
在上面的代码中,我们使用 find
方法来查询数据库中所有的 User 对象,并将其打印到控制台上。
修改数据
const user = await userRepository.findOne(1); user.name = "new name"; await userRepository.save(user);
在上面的代码中,我们使用 findOne
方法来查询数据库中 id 为 1 的 User 对象,并将其 name 属性修改为 "new name"。然后,使用 save
方法将该对象保存回数据库中。
删除数据
const user = await userRepository.findOne(1); await userRepository.remove(user);
在上面的代码中,我们使用 findOne
方法来查询数据库中 id 为 1 的 User 对象,并使用 remove
方法将其从数据库中删除。
总结
通过本文的介绍,大家应该已经了解了 TypeORM 的基本使用方法,以及如何定义实体类和进行数据访问等操作。
TypeORM 是一个非常强大和灵活的 ORM 框架,可以帮助开发者快速地进行数据模型和数据访问的开发。同时,TypeORM 也提供了丰富的文档和示例,方便大家学习和使用。如果您还没有尝试过 TypeORM,建议您在自己的项目中尝试使用一下。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/80387