2025-04-22

用 NestJS + Prisma 搭一个可维护的后端骨架

#nestjs #prisma #architecture

在 GEO 项目里,后端用的是 NestJS + Prisma。这套组合的优点不是"新",而是边界清晰:框架替你把分层想好了,你只要别乱跨层。

模块 > 文件夹

NestJS 的 Module 是天然的边界。一个业务域一个 module,对外只暴露 service,controller 只管收发。别让 controller 直接碰 PrismaClient——那是数据层的私事。

// 推荐:service 封装数据访问
@Injectable()
export class IntentService {
  constructor(private prisma: PrismaService) {}
  findRegion(id: string) {
    return this.prisma.regionIntent.findUnique({ where: { id } });
  }
}

Prisma 的两个习惯

  • 把 PrismaService 做成可注入的 provider,而不是到处 new PrismaClient();
  • schema 改动走 migration,别手动改库——多环境时对账会哭。

边界的意义

当项目从"几个人"长到"好几条业务线",真正救你的不是某个炫技写法,而是谁不能碰谁。分层越清晰,改一处时心越不慌。

可维护性不是写出来的,是边界画出来的。

← 返回文章列表