首页
关于
友链
Search
1
nestJs 基础增删改查
8 阅读
2
python 日志记录器
4 阅读
3
ptyhon 测试数据生成
4 阅读
4
python 处理数据库数据
3 阅读
5
python 封装yaml读取
2 阅读
默认分类
前端开发
HTML
CSS
VUE
JavaScript
React
后端开发
Java
nestJs
自动化测试
登录
Search
标签搜索
自动化测试
nestJs
Typecho
累计撰写
5
篇文章
累计收到
0
条评论
首页
栏目
默认分类
前端开发
HTML
CSS
VUE
JavaScript
React
后端开发
Java
nestJs
自动化测试
页面
关于
友链
搜索到
1
篇与
的结果
2025-06-14
nestJs 基础增删改查
创建项目nest new server 查看帮助nest g --help创建模块nest g res 模块名目录dot 一般用来做验证的,比如哪些字段要必填entities 用来创建数据表 用 prisma 就不用这个了案例1.创建一个教师相关的接口nest g res teacher2.安装 prismanpm install prisma --save-dev初始化 prismanpx prisma init在生成的 .dev 文件配置数据库信息,把 schema.prisma 里的 datasource db->provider 的值改为 mysql 即可3.创建表在上述的文件中写入下面内容//uuid:-分割mac地址+随机数+时间戳生成的 model Teacher { id String @id @default(cuid()) //@id主键 直接用 cuid 即可 // @db.LongText 精确控制Strig // @ignore忽略本行代码 // @map("别名") // @unique 唯一不可重复 name String //createAt DateTime @default(now()) //自动解决数据库8小时问题 //updateAt DateTime @default(now()) @updatedAt //@updatedAt 数据变动自动更新更新的时间 // 上面用 prisma 生成时间很可能导致8小时问题 有问题就用用下面的 createdAt DateTime @default(dbgenerated("NOW()")) @db.DateTime updatedAt DateTime @default(dbgenerated("NOW() ON UPDATE NOW()")) @db.Timestamp(0) }注意:在该文件中有动生成的 generator client 对象里会有一个 output 字段,将这个删除掉,否则可能导致后续导入 PrismaClient 失败4.数据库迁移上述内容写好后就要进行数据库迁移,也就是根据上面的信息开始真正的创建表了运行:npx prisma migrate dev --name init会自动在当前目录的 migrations 目录创建数据库语句文件5.创建 prisma service执行:nest g s prisma此时会在 src 目录下生成 prisma 目录这里面的文件填入下面内容:import { Injectable, OnModuleInit } from '@nestjs/common'; import { PrismaClient } from '@prisma/client'; @Injectable() export class PrismaService extends PrismaClient implements OnModuleInit { async onModuleInit() { // 连接prisma 类似 vue 的 mounted await this.$connect(); } } 此时已连接到了 prisma将 prisma 注入全局执行:nest g mo prisma此时会在 src 的 prima 目录下生成 prisma.module.ts 文件,随后需要在 app.module.ts 中注入 prismaModule如下:import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { TeacherModule } from './teacher/teacher.module'; import { PrismaService } from './prisma/prisma.service'; import { PrismaModule } from './prisma/prisma.module'; // 导入 @Module({ imports: [TeacherModule, PrismaModule], //注入 controllers: [AppController], //路由 providers: [AppService, PrismaService], //逻辑 }) export class AppModule {} 别着急现在还不能在具体的接口使用 prisma现在我们回到 teacher 的 service 文件里注入 prisamService如下:import { PrismaService } from '../prisma/prisma.service';//导入 @Injectable() export class TeacherService { constructor(private prisma: PrismaService) {} //注入 create(createTeacherDto: CreateTeacherDto) { return; }}其它注意事项如果在 schema.prisma 中新增了表,就要再运行一次 npx prisma migrate dev --name init,如果此时使用时没有代码提示导致报错,就先把服务停了再运行 npx prisma generate 会重新生成 PrismaClient ,然后再启动服务就好了,理论上再运行第一个命令时会自动生成新的 PrismaClient ,没有的话就自己手动跑一下吧如果改变了一些字段需要执行 npx prisma migrate reset 清理原来的内容同时生成新的,注意这个命令会删除已存在的所有数据
2025年06月14日
8 阅读
0 评论
0 点赞