Deno 是一种新兴的 JavaScript 运行时环境,它的出现让前端开发者可以使用 TypeScript 以及其他现代 JavaScript 工具和库进行后端开发。TypeORM 是一个流行的 TypeScript ORM(对象关系映射)框架,它可以让我们通过 TypeScript 编写高质量的 SQL 语句而不用直接写 SQL。本文将介绍如何在 Deno 中使用 TypeORM 进行数据库开发的方法。
安装和配置
在开始使用 Deno 和 TypeORM 进行数据库开发之前,我们需要先安装两个东西:Deno 和 TypeORM。如果你已经安装好了 Deno,那么你可以通过以下命令来安装 TypeORM:
npm install typeorm reflect-metadata
接下来,我们需要在我们的项目根目录下创建一个名为 tsconfig.json
的 TypeScript 配置文件,假设我们想要将编译后的代码放到 dist 目录下,那么配置文件应该长成这个样子:
-- -------------------- ---- ------- - ------------------ - --------- --------- --------- ----------- --------- -------- -- ---------- - ------------ - -
最后,我们需要在我们的入口文件中(例如 index.ts
)导入 TypeORM 并且配置数据库连接信息:
-- -------------------- ---- ------- ------ ------------------- ------ - ---------------- - ---- ---------- ------------------ ----- -------- ----- ------------ ----- ----- --------- ------- --------- ----------- --------- ------------- --------- - -- ----- -- ------------ ---- ---------- -- - --------------------- ---------------- -- - ------------------- ---
实体类的定义
在 TypeORM 中,我们需要定义实体类来表示我们数据库中的表。实体类需要被装饰器 @Entity
标记,被 @Column
标记的属性将会被映射到数据库表中的列。例如,下面是一个 User 实体类的定义:
-- -------------------- ---- ------- ------ - ------- ------- ----------------------- ---------- - ---- ---------- --------- ------ ----- ---- ------- ---------- - ------------------------- --- ------- --------- ----- ------- --------- ---- ------- --------- -------- ----- -- --------- -------- -
@PrimaryGeneratedColumn()
用于表示自增主键列,@Column()
用于表示普通列,如果需要设置列默认值可以使用 default
属性。我们还需要在数据库连接配置信息中将我们定义的实体类加入到 entities
数组中。
查询数据
在 TypeORM 中,我们可以使用查询语言来查询我们的数据库。查询语言通常包括以下四个部分:
SELECT
:我们要查询哪些列FROM
:我们要查询哪个表WHERE
:我们要查询哪些记录ORDER BY
:我们要按照哪个列排序
我们可以通过 TypeORM 提供的查询 API 来执行查询。例如,下面的代码展示了如何查询所有年龄大于 18 年的用户:
-- -------------------- ---- ------- ------ --------------- ---- ---------- -- --- ----- -------------------------- ------ - ---- ------------ - ---
我们可以在 where
对象中填写我们的查询条件。getRepository
方法获取 User 实体类对应的仓库对象,find
方法则是执行查询,并返回符合条件的所有用户对象的数组。
插入数据
在 TypeORM 中,我们可以使用仓库对象的 save
方法来插入一条新数据进入数据库。例如,下面的代码展示了如何插入一条新的用户记录:
-- -------------------- ---- ------- ------ --------------- ---- ---------- -- --- ----- ---- - --- ------- --------- - -------- -------- - --- ----- -------------------------------
我们可以创建一个新的 User 对象并为它的属性赋值。然后,我们可以使用仓库对象的 save
方法将新的 User 对象保存到数据库中。
更新数据
在 TypeORM 中,我们可以使用仓库对象的 save
方法来更新数据库中的一条已有的记录。例如,下面的代码展示了如何更新名字为 Alice 的用户记录的年龄属性:
import {getRepository} from "typeorm"; // ... const user = await getRepository(User).findOne({ name: "Alice" }); user.age = 21; await getRepository(User).save(user);
我们可以使用仓库对象的 findOne
方法获取名字为 Alice 的用户对象,并将其属性进行更新。更新完成后,我们可以使用仓库对象的 save
方法将更新结果保存到数据库中。
删除数据
在 TypeORM 中,我们可以使用仓库对象的 delete
方法来删除数据库中的一条记录。例如,下面的代码展示了如何删除所有年龄小于 18 年的用户记录:
import {getRepository} from "typeorm"; // ... await getRepository(User).delete({ age: LessThan(18) });
我们可以使用 delete
方法指定删除条件,并删除符合条件的所有用户记录。
总结
本文介绍了在 Deno 中使用 TypeORM 进行数据库开发的方法,包括安装和配置、实体类的定义、查询数据、插入数据、更新数据和删除数据。希望这篇文章能够对您有所帮助,并能够让您更加便捷地进行数据库开发。完整代码可参考下面的示例:
-- -------------------- ---- ------- ------ ------------------- ------ - ---------------- - ---- ---------- ------ - ------- ------- ----------------------- ----------- --------- -------- - ---- ---------- --------- ------ ----- ---- ------- ---------- - ------------------------- --- ------- --------- ----- ------- --------- ---- ------- --------- -------- ----- -- --------- -------- - ------------------ ----- -------- ----- ------------ ----- ----- --------- ------- --------- ----------- --------- ------------- --------- - ---- -- ------------ ---- ------------- -- -- - --------------------- -- -------- -- ---- ----- ----- - ----- -------------------------- ------ - ---- ------------ - --- ------------------- -- ---------- ----- ---- - --- ------- --------- - -------- -------- - --- ----- ------------------------------- -- ----- ----- ---------- ----- ------------ - ----- ----------------------------- ----- ------- --- ---------------- - --- ----- --------------------------------------- -- -------- -- ---- ----- ---------------------------- ---- ------------ --- ---------------- -- - ------------------- ---
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64dd87dcf6b2d6eab38bd1c7