nestJs(三) 数据库

本文介绍了如何在NestJs框架中建立数据库连接,使用TypeORM与Mysql,实现表结构定义、自动加载、联表查询,并在service层处理学生与课程的n:1关系操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

真正的服务往往包括数据存储。

本篇将介绍如何建立 NestJs 的数据库连接、并使用数据库联表查询。这样就就是完整的后台服务了。

 开发准备

  1. 下载并安装 Mysql
  2. 创建 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的接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值