1-1:搭建项目框架

初始化prisma

在server文件夹下,执行命令npx prisma init。于是在server文件夹下,就创建了prisma目录

在server目录下创建新模块

不需要来回切换目录。执行命令:nest g res user --project server。这个命令是在根目录下执行的(server),但是它会自动找到server/server/src,然后将user模块写入,并自动和app.module进行绑定

在ai中创建chat模块

同理:nest g res chat --project ai

shared中创建

在server/libs/shared/src创建prisma nest g mo prisma --project shared
nest g s prisma --project shared 显然prisma是ai和server都需要使用的,因此需要将prisma注册为全局模块

  1. 在shared/src/index.ts中,将prisma的service+module导出
js 复制代码
export * from './prisma/prisma.service'
export * from './prisma/prisma.module'
  1. 在prisma.module中导出prisma的service
js 复制代码
@Module({
    providers:[PrismaService],
    exports:[PrismaService]
})
  1. 在shared.module中导出prismaModule
js 复制代码
@Module({
    providers:[SharedService],
    exports:[SharedService,PrimsaService],
    imports:[PrimsaModule]
})
  1. 将shared.module扩充为全局模块(@Global)
js 复制代码
@Global()
@Module({
    imports:[PrimsaModule],
    providers:[SharedService],
    exports:[SharedService,PrimsaModule],
})
  1. 在app.module中注册一下
js 复制代码
@Module({
    imports:[UserModule,SharedModule],
    controllers:[AppController],
    providers:[AppService],
})

Tips:如果Prisma是一个独立的基础设施模块,可以直接让PrismaModule自己@Glabal()

js 复制代码
@Global()
@Module({
  providers: [PrismaService],
  exports: [PrismaService],
})
export class PrismaModule {}

但是,这里我们希望把所有的共享基础设施(比如有PrismaModule,RedisModule,LoggerModule)都通过SharedModule做统一出口暴露,就要采用上面的方式,将SharedModule做全局模块聚合 此外关于@Global和export * from './prisma/prisma.service':
@Global解决的是运行时的依赖注入问题,通过它可以实现其它模块这样注入:

js 复制代码
constructor(private readonly prisma: PrismaService) {}

但 @Global() 不会让 TypeScript 自动知道 PrismaService 从哪里import。因此此时导入需要写很长的路径:import { PrismaService } from 'libs/shared/src/prisma/prisma.service' 但是,通过

js 复制代码
export * from './prisma/prisma.module'
export * from './prisma/prisma.service'

我们可以写import { PrismaService } from '@app/shared'

简单测试一下,记得将nest-cli.json中的webpack配置项删除(我们并不希望通过webpack进行编译)

相关推荐
Decay__4 小时前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
代码山河7 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
微订校园外卖平台8 小时前
校园外卖平台选模板还是定制:架构、数据流与验收清单
大数据·架构·外卖系统·本地生活·微订
ZhengEnCi9 小时前
用 AI 写代码为什么拼到最后还是拼人:算力瓶颈与领域专家提示词的本质差异
算法·架构
Decay__10 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
华普微HOPERF13 小时前
Matter协议架构详解:数据模型与交互模型深度解析
microsoft·架构·交互
4SAPI14 小时前
多国产模型混合调度与企业级治理生产选型指南:4SAPI、硅基流动与 OpenRouter 的架构权衡
大数据·人工智能·架构·php
QAQmmttyyy16 小时前
FlyAgent 开发实录 ⑪|消息流即真相源
架构
FPGA小迷弟16 小时前
FPGA 与无人机:从飞控实时性到智能载荷的硬件加速实践
人工智能·ai·fpga开发·架构·无人机·ai编程
OCR_1337162127516 小时前
从 “外设“ 到 “算力节点“:护照阅读器的轻上位机架构,正在改写集成范式
架构