使用 TypeORM 和 Serverless 框架部署类型 ORM Node.js 应用程序

阅读时长 9 分钟读完

简介

TypeORM 是一个支持多种数据库的 ORM 框架,它使用 TypeScript 编写,可以在 Node.js 和浏览器中使用。Serverless 框架则是一个构建和部署无服务器应用程序的工具,它支持多种云平台和编程语言。

本文将介绍如何使用 TypeORM 和 Serverless 框架构建和部署一个基于 Node.js 的应用程序。我们将使用 TypeScript 编写代码,并将应用程序部署到 AWS Lambda 上。

准备工作

在开始之前,我们需要准备以下工具和环境:

  • Node.js 和 npm
  • TypeScript
  • Serverless CLI
  • AWS 账号和 IAM 用户

安装 Node.js 和 npm 可以访问官方网站进行下载和安装。安装 TypeScript 和 Serverless CLI 可以使用 npm 进行安装:

创建一个 AWS IAM 用户,并将其添加到具有 Lambda 和 API Gateway 权限的 IAM 组中。然后,配置 AWS CLI,以便 Serverless 框架可以使用您的 AWS 身份验证信息进行部署。

创建项目

首先,我们需要创建一个新的 Node.js 项目,并安装 TypeORM 和相关依赖:

我们还需要安装一些 TypeScript 相关的依赖:

然后,我们创建一个 tsconfig.json 文件,用于配置 TypeScript 编译器:

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

我们还需要创建一个 ormconfig.json 文件,用于配置 TypeORM:

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

这里我们使用 MySQL 数据库作为示例。您需要根据您的实际情况进行更改。

接下来,我们创建一个 src 文件夹,并在其中创建以下文件:

  • serverless.yml:Serverless 配置文件
  • index.ts:应用程序入口文件
  • entities 文件夹:TypeORM 实体类
  • migrations 文件夹:TypeORM 数据库迁移脚本
  • subscribers 文件夹:TypeORM 事件订阅器

编写代码

TypeORM 实体类

我们创建一个 User 实体类,用于表示用户信息:

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

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

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

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

TypeORM 数据库迁移脚本

我们创建一个数据库迁移脚本,用于创建用户表:

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

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

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

TypeORM 事件订阅器

我们创建一个事件订阅器,用于在保存用户信息时自动设置创建时间和更新时间:

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

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

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

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

应用程序入口文件

我们创建一个应用程序入口文件,用于处理 HTTP 请求:

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

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

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

Serverless 配置文件

我们创建一个 Serverless 配置文件,用于定义 Lambda 函数和 API Gateway:

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

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

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

构建和部署

我们使用以下命令构建和部署应用程序:

这将编译 TypeScript 代码,并将应用程序部署到 AWS Lambda 和 API Gateway 上。

测试

我们可以使用以下命令测试应用程序:

结论

在本文中,我们使用 TypeORM 和 Serverless 框架构建了一个基于 Node.js 的应用程序,并将其部署到 AWS Lambda 上。我们还介绍了如何编写 TypeORM 实体类、数据库迁移脚本和事件订阅器,以及如何处理 HTTP 请求。这为您构建更复杂的应用程序提供了一个良好的起点。

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

纠错
反馈