简介
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 进行安装:
npm install -g typescript serverless
创建一个 AWS IAM 用户,并将其添加到具有 Lambda 和 API Gateway 权限的 IAM 组中。然后,配置 AWS CLI,以便 Serverless 框架可以使用您的 AWS 身份验证信息进行部署。
创建项目
首先,我们需要创建一个新的 Node.js 项目,并安装 TypeORM 和相关依赖:
mkdir my-app cd my-app npm init -y npm install typeorm reflect-metadata aws-sdk
我们还需要安装一些 TypeScript 相关的依赖:
npm install -D typescript ts-node @types/node @types/aws-lambda
然后,我们创建一个 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:
-- -------------------- ---- ------- -------- ------ --------- ----- --- -------- ---------- ------- --------- ------------------ - ------- ----- ------- - -------- - ------------ --------- --- ---------- ---- -------- ------------------ ------- - ----- ----- ------ ------- ---
构建和部署
我们使用以下命令构建和部署应用程序:
tsc serverless deploy
这将编译 TypeScript 代码,并将应用程序部署到 AWS Lambda 和 API Gateway 上。
测试
我们可以使用以下命令测试应用程序:
curl https://xxxxxxxxxx.execute-api.us-east-1.amazonaws.com/dev/users curl -X POST -H "Content-Type: application/json" -d '{"name":"John Doe","email":"john.doe@example.com"}' https://xxxxxxxxxx.execute-api.us-east-1.amazonaws.com/dev/users
结论
在本文中,我们使用 TypeORM 和 Serverless 框架构建了一个基于 Node.js 的应用程序,并将其部署到 AWS Lambda 上。我们还介绍了如何编写 TypeORM 实体类、数据库迁移脚本和事件订阅器,以及如何处理 HTTP 请求。这为您构建更复杂的应用程序提供了一个良好的起点。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/675c0cf5a4d13391d8fd8fe2