Nestjs +prisma 服务端框架使用笔记

1.安装nestjs 框架,新建工程 project-name

cnpm install -g @nestjs/cli
nest new project-name

2.进入项目 cnpm run start:dev 运行项目

http://localhost:3000/

3.创建代码

nest g resource data-priviter/user //创建一个user 代码

访问 http://localhost:3000/user 到指定路由的控制器

4.创建项目所需包

cnpm install @nestjs/config// 安装NestJS 中安全高效的管理 Config 全局配置文件
cnpm install @nestjs/jwt //安装权限控制
cnpm install uuid //安装通用唯一识别码
cnpm install class-validator //安装数据验证

cnpm install socket.io //安装基于websocket封装的一个库
cnpm install @nestjs/platform-socket.io //安装nest 使用socket.io 的适配器
cnpm install @nestjs/websockets //安装WebSocket 模块,用于处理 WebSocket 相关的逻辑

cnpm install express-session //安装session包
cnpm install --save-dev @types/express-session //安装ts代码提示

cnpm install svg-captcha//安装包
cnpm install --save-dev @types/@svg-captcha //安装ts代码提示

cnpm install --save-dev @types/multer //安装文件上传ts代码提示

5.安装orm框架prisma

cnpm install prisma --save-dev

nestjs 使用 prisma 安装客户端工具

cnpm install @prisma/client

初始化Prisma会生成prisma/schema.prisma 文件

prisma init

连接数据库 prisma/schema.prisma 文件


generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}


model User {
  id      Int      @id @default(autoincrement())
  parentId Int? 
  // parent   User?   @relation("BlogOwnerHistory1", fields: [parentId], references: [id])
  // self User[]   @relation("BlogOwnerHistory1")
  name    String
  password    String
  addTime DateTime
  loginTime DateTime
  loginCount Int
  rolesId Int
  roles Roles  @relation(fields: [rolesId], references: [id])
  
  email   String 
  permissions UsersOnPermissions[]
  online Online?
 
}
model Roles{
   id Int @id @default(autoincrement())
   name String
   users User[]
}
model Permission{
   id Int @id @default(autoincrement())
   name String 
   users UsersOnPermissions[]
}
 
model UsersOnPermissions {
  userId        Int
  users         User       @relation(fields: [userId], references: [id])
  permissionId Int
  permission   Permission @relation(fields: [permissionId], references: [id])

  @@id([userId, permissionId])
}

model Online{
  id Int @id @default(autoincrement())
  userId Int @unique//使用属性来标记字段@unique,以保证只有一个User连接到每个Online。
  loginTime DateTime
  user User @relation(fields: [userId], references: [id])

}

将 Prisma 模型推送到数据库

 prisma db push

生成SQL迁移文件

prisma migrate dev

重新生成 Prisma 客户端

prisma generate

这将根据你最新的 schema 文件生成新的客户端代码。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
首先,你需要安装Prisma和NestJS的依赖: ``` npm install @prisma/client prisma @nestjs/prisma ``` 接下来,你需要在你的NestJS应用程序中创建一个Prisma服务。你可以使用`PrismaService`类来实现这一点。在`PrismaService`中,你需要创建一个Prisma客户端实例: ```typescript import { Injectable } from '@nestjs/common'; import { PrismaClient } from '@prisma/client'; @Injectable() export class PrismaService { private prisma: PrismaClient; constructor() { this.prisma = new PrismaClient(); } getClient() { return this.prisma; } async onModuleDestroy() { await this.prisma.disconnect(); } } ``` 现在,你可以在你的控制器或服务中注入`PrismaService`,并使用`getClient`方法访问Prisma客户端。 例如,以下是一个使用Prisma的控制器: ```typescript import { Controller, Get } from '@nestjs/common'; import { PrismaService } from './prisma.service'; @Controller('users') export class UsersController { constructor(private prisma: PrismaService) {} @Get() async getUsers() { const users = await this.prisma.getClient().user.findMany(); return users; } } ``` 这里我们使用Prisma客户端的`user.findMany`方法来获取所有用户。 最后,你需要在你的应用程序模块中注册`PrismaService`: ```typescript import { Module } from '@nestjs/common'; import { PrismaService } from './prisma.service'; import { UsersController } from './users.controller'; @Module({ imports: [], controllers: [UsersController], providers: [PrismaService], }) export class AppModule {} ``` 现在,你已经成功地将Prisma集成到了NestJS中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值