Deno 中使用 TypeORM 时如何自动生成数据库表结构?

阅读时长 5 分钟读完

TypeORM 是一个强大的 TypeScript ORM 框架,它支持多种数据库(MySQL,PostgreSQL,SQLite,SQL Server 等)和 Deno 运行时环境。TypeORM 支持自动生成数据库表格,只需要简单的配置即可。本文将介绍如何在 Deno 中使用 TypeORM 自动创建数据库表格。

安装必要的依赖

在开始使用 TypeORM 之前,需要先安装 Deno 和相关依赖。首先需要安装最新版本的 Deno:

然后,需要在项目中安装 TypeORM 和相关驱动程序。例如,如果要连接 MySQL 数据库,则需要安装以下依赖:

配置 TypeORM

TypeORM 需要一些配置来连接数据库和自动生成表格。可以将这些配置保存在 .env 文件中。以下是一些配置示例:

在这里,我们使用 MySQL 作为示例数据库,使用用户名和密码进行连接,数据库名称为 test。请根据实际需求进行修改。

在项目中创建 ormconfig.ts 文件,可以使用以下代码:

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

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

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

此配置使用 .env 文件指定连接数据库的详细信息,并指定了要同步数据库中的表格。每当应用程序启动时,TypeORM 将自动检查代码中的实体定义,与数据库中的表格进行比较,并创建缺少的表格。

此配置中,entities 指定了项目中实体定义的路径。例如,如果实体文件位于 src/entity/User.ts 中,则应该设置为 ['scr/entity/**/*.ts']

创建实体

在 TypeORM 中,实体是映射到数据库表格的 JavaScript 类。要定义一个实体,需要创建一个继承于 BaseEntity 的类,并使用装饰器指定实体和数据库中的表格的属性和行为。

以下是一个用户实体的示例:

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

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

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

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

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

此实体定义了一个名为 users 的表格,包含 idnameemailpassword 列。其中,@PrimaryGeneratedColumn() 指定 id 列作为自增标识符。

运行自动生成表格

当所有配置和实体定义准备就绪后,可以使用 TypeORM 命令行工具来运行自动生成表格的操作:

以上命令将:

  1. 根据实体定义生成一个名为 create-users 的迁移文件,用于后续获取并更新数据库表格的结构。
  2. 运行 migrations 并在数据库中创建表格。

现在,可以使用以下代码获取生成的表格:

此代码将连接到数据库,获取用户列表并打印到控制台。如果所有东西都设置正确,将输出刚刚创建的 users 表格的内容。

结论

使用 TypeORM 自动生成表格,可以大大简化表格创建和定义的过程。只要定义好实体类和数据库配置,使用 TypeORM CLI 即可自动创建匹配实体结构的表格。

在实际开发中,需要根据实际情况对代码进行优化和安全性检查,例如在连接数据库时附加安全选项,使用专业的加密和哈希函数来存储密码等。

这里仅提供最基本的操作,希望能帮助读者理解如何在 Deno 中使用 TypeORM 自动生成数据库表格。

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

纠错
反馈