真正的服务往往包括数据存储。
本篇将介绍如何建立 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 中使用providers
service 的 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的接口