在 Deno 中使用 TypeORM 进行数据库开发

阅读时长 8 分钟读完

Deno 是一种新兴的 JavaScript 运行时环境,它的出现让前端开发者可以使用 TypeScript 以及其他现代 JavaScript 工具和库进行后端开发。TypeORM 是一个流行的 TypeScript ORM(对象关系映射)框架,它可以让我们通过 TypeScript 编写高质量的 SQL 语句而不用直接写 SQL。本文将介绍如何在 Deno 中使用 TypeORM 进行数据库开发的方法。

安装和配置

在开始使用 Deno 和 TypeORM 进行数据库开发之前,我们需要先安装两个东西:Deno 和 TypeORM。如果你已经安装好了 Deno,那么你可以通过以下命令来安装 TypeORM:

接下来,我们需要在我们的项目根目录下创建一个名为 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 的用户记录的年龄属性:

我们可以使用仓库对象的 findOne 方法获取名字为 Alice 的用户对象,并将其属性进行更新。更新完成后,我们可以使用仓库对象的 save 方法将更新结果保存到数据库中。

删除数据

在 TypeORM 中,我们可以使用仓库对象的 delete 方法来删除数据库中的一条记录。例如,下面的代码展示了如何删除所有年龄小于 18 年的用户记录:

我们可以使用 delete 方法指定删除条件,并删除符合条件的所有用户记录。

总结

本文介绍了在 Deno 中使用 TypeORM 进行数据库开发的方法,包括安装和配置、实体类的定义、查询数据、插入数据、更新数据和删除数据。希望这篇文章能够对您有所帮助,并能够让您更加便捷地进行数据库开发。完整代码可参考下面的示例:

-- -------------------- ---- -------
------ -------------------
------ - ---------------- - ---- ----------
------ - ------- ------- ----------------------- ----------- --------- -------- - ---- ----------

---------
------ ----- ---- ------- ---------- -
  -------------------------
  --- -------

  ---------
  ----- -------

  ---------
  ---- -------

  --------- -------- ----- --
  --------- --------
-

------------------
  ----- --------
  ----- ------------
  ----- -----
  --------- -------
  --------- -----------
  --------- -------------
  --------- -
    ----
  --
  ------------ ----
------------- -- -- -
  ---------------------

  -- -------- -- ----
  ----- ----- - ----- -------------------------- 
    ------ -
      ---- ------------
    -
  ---
  -------------------

  -- ----------
  ----- ---- - --- -------
  --------- - --------
  -------- - ---
  ----- -------------------------------

  -- ----- ----- ----------
  ----- ------------ - ----- ----------------------------- ----- ------- ---
  ---------------- - ---
  ----- ---------------------------------------

  -- -------- -- ----
  ----- ---------------------------- ---- ------------ ---
---------------- -- -
  -------------------
---

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64dd87dcf6b2d6eab38bd1c7

纠错
反馈