使用 TypeORM 与 Express 的示例
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
初始设置
让我们创建一个名为 "user" 的简单应用,该应用将用户数据存储在数据库中,并允许我们通过Web API实现用户创建、更新、删除操作,以及获取所有用户列表和按ID获取单个用户。
首先,创建一个名为 "user" 的目录:
mkdir user
进入该目录并初始化新项目:
cd user
npm init
填写所有必需的应用程序信息以完成初始化过程。
现在需要安装并配置 TypeScript 编译器。首先安装它:
npm i typescript --save-dev
创建 tsconfig.json 文件,该文件包含应用程序编译和运行所需的配置。
使用你喜欢的编辑器创 建该文件,并添加以下配置:
{
"compilerOptions": {
"lib": ["es5", "es6", "dom"],
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true
}
}
在 src 目录中创建主应用入口文件 app.ts:
mkdir src
cd src
touch app.ts
在文件中添加简单的 console.log 语句:
console.log("Application is up and running")
现在是运行应用程序的时候了。 首先需要编译 TypeScript 项目:
tsc
编译完成后,将生成 src/app.js 文件。
使用以下命令运行:
node src/app.js
运行应用程序后,控制台应立即显示 "Application is up and running" 消息。
每次修改文件后都必须重新编译。 或者,你可以设置文件监视器或安装 ts-node 来避免每次手动编译。
在应用中添加 Express
让我们将 Express 添加到应用中。首先安装所需依赖包:
npm install express
npm install @types/express --save-dev
-
express是 Express 引擎本身,它允许我们创建 Web API -
@types/express用于在使用 Express 时提供类型信息
编辑 src/app.ts 文件并添加 Express 相关逻辑:
import * as express from "express"
import { Request, Response } from "express"
// create and setup express app
const app = express()
app.use(express.json())
// register routes
app.get("/users", function (req: Request, res: Response) {
// here we will have logic to return all users
})
app.get("/users/:id", function (req: Request, res: Response) {
// here we will have logic to return user by id
})
app.post("/users", function (req: Request, res: Response) {
// here we will have logic to save a user
})
app.put("/users/:id", function (req: Request, res: Response) {
// here we will have logic to update a user by a given user id
})
app.delete("/users/:id", function (req: Request, res: Response) {
// here we will have logic to delete a user by a given user id
})
// start express server
app.listen(3000)
现在可以编译并运行项目。 此时应已启动 Express 服务器并配置了可用路由, 但这些路由尚未返回任何内容。
在应用中添加 TypeORM
最后,让我们将 TypeORM 添加到应用中。
本例将使用 mysql 驱动,
其他驱动的设置过程类似。
首先安装所需依赖包:
npm install typeorm reflect-metadata mysql
-
typeorm是 TypeORM 包本体 -
reflect-metadata是确保装饰器正常工作的必备依赖,请确保在 TypeORM 代码之前导入它 -
mysql是底层数据库驱动,如果使用其他数据库系统,必须安装相应的驱动包
创建 app-data-source.ts 文件来配置初始数据库连接选项:
import { DataSource } from "typeorm"
export const myDataSource = new DataSource({
type: "mysql",
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test",
entities: [__dirname + "/entities/**/*{.js,.ts}"],
logging: true,
synchronize: true,
})
根据你的需求配置各项选项。 更多选项信息请参阅此处。