当前位置:   article > 正文

typeorm mysql2_指南 - 使用 TypeORM 和 Express 的示例 - 《TypeORM v0.2.20 中文文档》 - 书栈网 · BookStack...

typeorm中文文档

使用 TypeORM 和 Express 的示例

初始设置

让我们创建一个名为”user”的简单应用程序,它将用户存储在数据库中

并允许我们在 web api 创建、更新、删除和获取所有用户的列表,以及通过 id 获取的单个用户。

首先,创建一个名为”user”的目录:

mkdir user

然后切换到目录并创建一个新项目:

cd user

npm init

通过填写所有必需的应用程序信息来完成初始化过程。

现在我们需要安装和设置 TypeScript 编译器。 首先安装:

npm i typescript--save-dev

然后创建一个tsconfig.json文件,其中包含应用程序编译和运行所需的配置。 使用你常用的编辑器创建它并进行以下配置:

{

"compilerOptions":{

"lib":["es5","es6"],

"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 添加到应用程序中。 首先,需要安装依赖包:d:

npm i express body-parser@types/express@types/body-parser--saveexpress 是 express 引擎,允许我们创建一个 web api

body-parser 用于设置 express 如何处理客户端发送的 body

@types/express 用于在使用 express 时具有类型提示信息

@types/body-parser 用于在使用 body parser 时具有类型提示信息

让我们编辑src/app.ts文件并添加与表达相关的逻辑:

import*asexpressfrom"express";

import{Request,Response}from"express";

import*asbodyParserfrom"body-parser";

//创建并设置 express app

constapp=express();

app.use(bodyParser.json());

// 注册路由

app.get("/users",function(req:Request,res:Response){

// 获取用户信息的逻辑操作

});

app.get("/users/:id",function(req:Request,res:Response){

// 通过id获得用户信息的逻辑操作

});

app.post("/users",function(req:Request,res:Response){

// 保存用户信息的逻辑操作

});

app.put("/users/:id",function(req:Request,res:Response){

// 根据给定id更新某个用户的逻辑操作

});

app.delete("/users/:id",function(req:Request,res:Response){

// 根据给定id删除一个用户的逻辑操作

});

// 启动 express 服务

app.listen(3000);

现在你可以编译并运行项目。

此时你应该有一个启动的 express 服务,并且有可以工作的路由。

但是,这些路由目前并未返回任何内容。

将TypeORM添加到应用程序

最后,让我们将 TypeORM 添加到应用程序中。

在这个例子中,我们将使用mysql驱动程序。

其他驱动程序的安装过程类似。

首先安装依赖包:

npm i typeorm mysql reflect-metadata--savetypeorm typeorm 包

mysql 是底层数据库驱动程序。如果你使用的是其他数据库系统,则必须安装相应的包。

reflect-metadata 需要使装饰器正常工作

然后创建一个ormconfig.json文件来配置数据库连接。

{

"type":"mysql",

"host":"localhost",

"port":3306,

"username":"test",

"password":"test",

"database":"test",

"entities":["src/entity/*.js"],

"logging":true

}

根据需要配置每个选项。

了解有关 连接选项的更多信息。

让我们在src/entity中创建一个User实体:

import{Entity,Column,PrimaryGeneratedColumn}from"typeorm";

@Entity()

exportclassUser{

@PrimaryGeneratedColumn()

id:number;

@Column()

firstName:string;

@Column()

lastName:string;

}

然后修改 src/app.ts:

import*asexpressfrom"express";

import{Request,Response}from"express";

import*asbodyParserfrom"body-parser";

import{createConnection}from"typeorm";

import{User}from"./User";

// 创建 typeorm 连接

createConnection().then(connection=>{

constuserRepository=connection.getRepository(User);

// 创建并设置express app

constapp=express();

app.use(bodyParser.json());

// 注册路由

app.get("/users",asyncfunction(req:Request,res:Response){

returnuserRepository.find();

});

app.get("/users/:id",asyncfunction(req:Request,res:Response){

returnuserRepository.findOne(req.params.id);

});

app.post("/users",asyncfunction(req:Request,res:Response){

constuser=userRepository.create(req.body);

returnuserRepository.save(user);

});

app.put("/users/:id",function(req:Request,res:Response){

constuser=userRepository.findOne(req.params.id);

userRepository.merge(user,req.body);

returnuserRepository.save(user);

});

app.delete("/users/:id",asyncfunction(req:Request,res:Response){

returnuserRepository.remove(req.params.id);

});

// 启动 express server

app.listen(3000);

});

如果要将逻辑处理提取到单独的文件中并且还需要connection实例,则可以使用getConnection:

import{getConnection}from"typeorm";

import{User}from"./User";

exportfunctionUsersListAction(req:Request,res:Response){

returngetConnection()

.getRepository(User)

.find();

}

在这个例子中你甚至不需要getConnection - 可以直接使用getRepository函数:

import{getRepository}from"typeorm";

import{User}from"./User";

exportfunctionUsersListAction(req:Request,res:Response){

returngetRepository(User).find();

}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/661379
推荐阅读
相关标签
  

闽ICP备14008679号