nodejs学习笔记(31) - nest.js框架学习(2):连接以及操作数据库
ORM初识
ORM是Object Relational Mapping的缩写,译为“对象关系映射”,它解决了对象和关系型数据库之间的数据交互问题。使用面向对象编程时,数据很多时候都存储在对象里面,具体来说是存储在对象的各个属性(也称成员变量)中。例如有一个User类,它的id、username、password、email属性都可以用来记录用户信息。当我们需要把对象中的数据存储到数据库时,按照传统思路,就得手动编写SQL语句,将对象的属性值提取到SQL语句中,然后再调用相关方法执行SQL语句。而有了
ORM技术以后,只要提前配置好对象和数据库之间的映射关系,ORM就可以自动生成SQL语句,并将对象中的数据自动存储到数据库中,整个过程不需要人工干预。在Java中,ORM一般使用XML或者注解来配置对象和数据库之间的映射关系。而nestjs官方推荐使用的orm工具为typeOrm
传统的sql语句
SELECT id,name,age FROM girls where id=1 |
orm代码
// 就像操作对象一样 |
使用TypeOrm
- 安装
npm install --save @nestjs/typeorm typeorm mysql2 |
- 引入
TypeORM
/* ------------- /src/app.module.ts --------------- */ |

看到全绿输出则证明连接数据库成功
数据库操作-TypeORM的实体操作
ORM中的实体其实就是把数据库映射成对象的那个类。这个类可以模拟数据库表,定义其中的字段。因为映射的过程ORM已经为我们作好了,所以我们只需要定义实体类,当实体类定义好以后,就可操作数据库了。这里所谓的实体,就是Object。我们要想在nestjs中实现操作数据库,光连接数据库是不足够的,我们要使用typeorm去创建一个实体,去对应数据库中对应的表,建立连接关系,这样我们才可以操作数据库
创建实体
- 我们在想要操作的模块中新建一个文件夹
entities,然后在里边新建boys.entity.ts编写实体。
// 编写实体,用于一一对应数据库中的数据映射关系 |
- 编写好类实体之后,需要在
module里进行引入,打开boys.module.ts文件,先用import引入TypeOrmModule。
import { Module } from '@nestjs/common'; |
- 随后我们打开数据库查看是否新建了一张表
boys,若是存在说明我们成功通过实体让整个nest项目连接到数据库了!

下面补充一下数据库中的类型以及typeOrm中常用的装饰符模块
- 下面给出所有的
mysql的数据类型
int, tinyint, smallint, mediumint, bigint, float, double, dec, decimal, |
- 自动生成时间 在开发中经常需要在保存数据时同时记录时间,这时候可以使用
@CreateDateColumn( )装饰器来制作。我们先进行引入以及使用。
import {CreateDateColumn} from 'typeorm' |
- 自动生成列 开发时也会遇到生成一个不规则、不重复的自动编号,这时候就可以使用
Generated( )装饰器。
import {CreateDateColumn} from 'typeorm' |
操作数据库实现数据的增删改查
- 经过上面的操作,我们已经成功连接到数据库且在数据库于项目中成功建立映射关系,下面我们开始编写接口,实现操作数据库,增删改查操作,业务逻辑还是在
service里面写,controller中还是作路由操作
完整的源码展示:
app.module.ts(项目的整体模块)
import { Module } from '@nestjs/common'; |
boys.module.ts(操作对应的模块)
import { Module } from '@nestjs/common'; |
boys.controller.ts模块控制层
/* controller层主要编写接口,不写业务逻辑 */ |
boys.service.ts(service层主要编写接口的业务逻辑,操作数据库)
import { Injectable } from '@nestjs/common'; |
boys.entities.ts(entities层,主要用于建立数据库与对应实体的映射关系)
// 编写实体,用于一一对应数据库中的数据映射关系 |
结果展示:
- 新增数据

- 修改数据

- 查找数据

- 删除数据

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0许可协议。转载请注明来自 肥林の仓库




