前言
随着前端技术的不断发展和进步,前端技术栈也在不断地拓展和完善,从单纯的 HTML+CSS+JavaScript,到现在的 React、Vue、Angular 等一系列高级框架。除了不断的开发新的前端框架,还有不少前端工程师开始学习后端技术,比如 Node.js、PHP、Java、Python 等后端开发语言。在后端开发语言中,Node.js 以其高效、轻便等特点备受青睐,所以我们今天来介绍在 Node.js 中操作 MySQL 数据库的一种高效、轻量的工具——Koa2 集成 TypeORM。
简介
Koa2 是基于 Node.js 平台的 web 开发框架,它通过一系列功能强大的中间件,让 web 开发变得更为轻便和简单。在 Koa2 中使用 TypeORM 来操作 MySQL 数据库,可以让我们进行高效、轻量和高质量的数据库操作。TypeORM 是一种具有优秀的对象关系映射功能和预编译语句系统的 ORM 框架,它支持 TypeScript 和 JavaScripts,可以在 Node.js 中优雅地进行数据库操作。
安装 Koa2 和 TypeORM
在安装 Koa2 和 TypeORM 之前我们需要准备好 Node.js 环境,然后使用 npm install -g koa-generator 命令全局安装 Koa2,然后进入相应的项目目录中使用 koa2 my_project_name 命令创建项目,接下来使用以下命令安装 TypeORM:
npm install typeorm reflect-metadata mysql
TypeORM 基本配置
在使用 TypeORM 之前,需要为其进行一些基本的配置,其中包括数据库的配置和 ORM 的配置。
数据库配置
在使用 TypeORM 操作数据库之前,首先需要配置数据库的连接信息,通过在项目的根目录下创建一个 ormconfig.json 文件来进行配置。例如:
-- -------------------- ---- ------- - ------- -------- ------- ------------ ------- ----- ----------- ------- ----------- --------- ----------- ------- -------------- ----- ---------- ------ ----------- - -------------------- -- ------ - -------------- ------------ - -
在这个配置中,我们指定了数据库的连接信息,包括数据库类型、主机名、端口号、用户名、密码和数据库名等。其中,synchronize 选项为 true 表示 TypeORM 会自动同步数据库的结构信息,在连接到数据库成功后,如果数据库的表结构与定义的实体类不同,TypeORM 会将其更新为定义的实体类, 如果数据库没有定义的表,TypeORM 会创建这个表。logging 选项为 false 表示 TypeORM 的日志将不会在控制台输出,entities 选项中指定了存放实体类的模板路径。
ORM 配置
我们需要在项目的根目录下创建一个 ormconfig.json 文件,并在其中添加以下内容:
-- -------------------- ---- ------- ------ - ---------------- - ---- ---------- ------ - ---- - ---- ----------------------- ------ ----- ---- - ------------------ ----- -------- ----- ------------ ----- ----- --------- ------- --------- --------- --------- ------- --------- ------- ------------ ----- -------- ------ ---
在这个配置中,我们使用了 TypeORM 提供的 createConnection 方法来建立数据库连接,其中 entities 选项用来配置我们的实体类,synchronize 选项用来更新数据库的结构信息,logging 选项用来记录 TypeORM 的日志。
数据库操作
在完成了 TypeORM 的基本配置之后,我们就可以开始使用它来操作数据库了。在使用 TypeORM 操作数据库时,我们需要先定义一个实体类,然后在这个实体类上使用装饰器来标明这个实体类和数据库中的表之间的映射关系,最后可以在实体类中使用 TypeORM 提供的一系列方法来进行数据库操作。
定义实体类
在 TypeORM 中,可以通过定义实体类来实现对表的操作。例如,我们定义一个 User 实体类来表示用户表,如下所示:
-- -------------------- ---- ------- ------ - ------- ------- ------------ - ---- ---------- --------- ------ ----- ---- - --------- -------- ----- ---------- ----------- -- --- ------- --------- ----- ------- --------- ---- ------- --------------- ------ ----------------- - ------------------- --------- - -
在这个实体类中,我们使用了 Entity 装饰器来标识这个实体类和数据库表之间的映射关系,其中 @Column 装饰器表示这个属性对应了数据库表中的一列,@BeforeInsert 装饰器表示在插入数据库之前需要进行的操作。
插入数据
在 TypeORM 中插入数据非常简单,我们只需要在实体类中使用 create 方法来创建一个实体对象,然后通过 entityManager.save() 方法将这个实体类保存到数据库中。例如,我们使用如下代码来插入一条 User 数据:
-- -------------------- ---- ------- ------ - ---- - ---- -------------------- ------ - ---- - ---- ------------------------ ------ ----- -------- ---------------- ------- ---- -------- ------------- - ----- ---- - ----- ---------------------- -- - ----- ------------- - --------------------------------- ----- ---- - -------------------------- - ----- --- --- ------ ------------------------- --- ------ ----- -
查询数据
在 TypeORM 中查询数据也非常方便,我们只需要在实体类中使用 findOne 或 find 方法,通过指定条件来查询相应的数据。例如,我们使用如下代码来查询一条 User 数据:
-- -------------------- ---- ------- ------ - ---- - ---- -------------------- ------ - ---- - ---- ------------------------ ------ ----- -------- ------------------- -------- ------------- - ----- ---- - ----- ---------------------- -- - ----- ------------- - --------------------------------- ------ --------------------------- -------- --- ------ ----- -
更新数据
在 TypeORM 中更新数据也非常简单,我们只需要使用相应的 entityManager.save() 或 entityManager.update() 方法即可。例如,我们使用如下代码来更新一条 User 数据:
-- -------------------- ---- ------- ------ - ---- - ---- -------------------- ------ - ---- - ---- ------------------------ ------ ----- -------- --------------- ------- ------- - ----- --- -- - ----- ------- ---- ------ -- -- ------------- - ----- ---- - ----- ---------------------- -- - ----- ------------- - --------------------------------- ----- ---------- - -------------------------- ------- - ----- --- --- ------ ------------------------------- --- ------ ----- -
删除数据
在 TypeORM 中删除数据也非常方便,我们只需要使用相应的 entityManager.remove() 方法即可。例如,我们使用如下代码来删除一条 User 数据:
-- -------------------- ---- ------- ------ - ---- - ---- -------------------- ------ - ---- - ---- ------------------------ ------ ----- -------- ---------------------- -------- ------------- - ----- ---------------------- -- - ----- ------------- - --------------------------------- ----- ---------- - -------------------------- - --- ------ --- --------------------------------- --- -
总结
本文介绍了在 Koa2 中使用 TypeORM 来操作 MySQL 数据库的方法,包括对 TypeORM 的基本配置、实体类的定义和数据库操作等方面进行了详细的介绍。通过本文的学习,我们可以快速掌握在 Node.js 中使用 TypeORM 进行数据库操作的技巧,从而提高我们的开发效率和代码质量。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6492647d48841e989402ff93