真正的服务往往包括数据存储。
本篇将介绍如何建立 NestJs 的数据库连接、并使用数据库联表查询。这样就就是完整的后台服务了。
开发准备
- 下载并安装 Mysql
- 创建 school 库
create database school;
3.安装 @nestjs/typeorm typeorm mysql2
npm install --save @nestjs/typeorm typeorm mysql2
数据库连接

初始化数据库连接。
autoLoadEntities 自动化 load entity 文件, 所有在 Module 中引用的 Entity 文件会被自动加载。自动加载设置为 true 即可。
synchronize 自动化同步表,本地可自动打开,线上数据库不建议打开。
定义表结构

@Entity注解代表是数据库入口文件;@Column是基础列文件,使用type字段定义在数据库实际存储@PrimaryGeneratedColumn代表单调递增的主键@UpdateDateColumn当记录修改时会修改时间@CreateDateColumn当记录新增时会写入时间
引用表

imports引用 typeorm 模块, entity 才可以在 service 中使用providersservice 的 constructor 需要引用哪些模块controllers模块的 controller

这样会在 db 中建立 students 新表。
使用 show create table 能看表的详细信息。

与数据库交互
到这一步,终于可以和数据库进行交互了。基本上和数据库交互的部分都会放在 service 层,因此 新增 和 查询 都放在 service 层。
其中包括了
getStudentName的改造setStudent函数的新增


save一下才能保存到数据库中
联表查询
我们准备新建课程表class,每个班级可以有多个学生,一个学生隶属一个班级。
这样学生和班级就构成了 n:1 的关系。
为了方便展示,在学生模块下直接新增 class.entity.ts 文件。并通过 @OneToMany 关联 students。


students.module.ts 引入表

完成添加class和查询class的接口







](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=E%3A%5CCS_study%5Clanqiaobei%5C%E7%AC%94%E8%AE%B0%5C%E5%9B%BE%E7%89%87%5C%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202023-11-14%20210927.png&pos_id=img-0Kr25g7f-1700056032600)












