前言
在现代的 Web 开发中,操作数据库是必不可少的一部分。在 Node.js 中,有许多优秀的 ORM 框架可以选择,比如 Sequelize、Prisma 等。本文将介绍另一个优秀的 ORM 框架 TypeORM,并演示如何在 Fastify 中使用 TypeORM 来操作数据库。
TypeORM 简介
TypeORM 是一个基于 TypeScript 的 ORM 框架,支持多种数据库,包括 MySQL、PostgreSQL、SQLite、MariaDB、MongoDB 等。与其他 ORM 框架不同的是,TypeORM 支持使用 TypeScript 类来定义数据库表结构,同时还支持使用装饰器来声明实体属性的元数据,使得代码更加简洁易懂。
安装 TypeORM
在使用 TypeORM 之前,需要先安装它。可以使用 npm 或 yarn 来安装 TypeORM:
npm install typeorm reflect-metadata
或者
yarn add typeorm reflect-metadata
需要注意的是,TypeORM 需要使用 reflect-metadata 库来支持装饰器。
在 Fastify 中使用 TypeORM
在 Fastify 中使用 TypeORM 时,首先需要创建一个 TypeORM 的连接。可以在 Fastify 的启动回调函数中创建连接,例如:
-- -------------------- ---- ------- ------ - ---------------- - ---- ---------- ------ -------- - --------------- - ---- ---------- ----- ---- --------------- - ---------- ---------------- ----- -- -- - ----- ---------- - ----- ------------------- ------------------- ------- -- ------------------------ ---
上面的代码中,我们使用 createConnection()
函数来创建一个 TypeORM 的连接。这个函数会自动读取 ormconfig.json
文件来获取数据库连接的配置信息。如果没有该文件,可以手动传入配置信息。
接下来,我们需要定义一个实体类来映射数据库中的表。实体类需要使用 @Entity()
装饰器来声明,同时还需要使用 @Column()
装饰器来声明实体属性的元数据。例如:
-- -------------------- ---- ------- ------ - ------- ------- ---------------------- - ---- ---------- --------- ------ ----- ---- - ------------------------- --- ------- --------- ----- ------- --------- ---- ------- -
上面的代码中,我们定义了一个名为 User
的实体类,使用 @PrimaryGeneratedColumn()
装饰器声明了一个自增的主键 id
,同时使用 @Column()
装饰器声明了两个属性 name
和 age
。
定义好实体类之后,我们就可以在 Fastify 的路由中使用 TypeORM 来操作数据库了。例如:
import { getRepository } from 'typeorm'; import { User } from './entity/User'; app.get('/users', async (req, res) => { const userRepository = getRepository(User); const users = await userRepository.find(); res.send(users); });
上面的代码中,我们使用 getRepository()
函数来获取 User
实体类对应的仓库,然后使用 find()
方法来查询所有的用户信息,并将结果返回给客户端。
总结
本文介绍了如何在 Fastify 中使用 TypeORM 来操作数据库。通过使用 TypeORM,我们可以使用 TypeScript 类来定义数据库表结构,同时还支持使用装饰器来声明实体属性的元数据,使得代码更加简洁易懂。希望本文能够对大家有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65f504742b3ccec22fd308d6