为个人理财启动 NestJS API

发布: (2026年2月3日 GMT+8 09:41)
4 min read
原文: Dev.to

Source: Dev.to

概览

大多数在线的 NestJS 教程只停留在基础的 CRUD 操作或简单的 TODO 列表应用。本系列将超越这些入门示例,从零构建一个 个人理财 API——一个可投入生产的 REST API,用于管理收入、支出和账户类型。

每篇文章都是 3–4 分钟的短阅读,聚焦于应用的某个具体方面。阅读完毕后,你将拥有一个功能完整的 API,能够进一步扩展或与任意前端集成。

架构

  • NestJS – 后端框架(TypeScript、依赖注入、装饰器)
  • Supabase – PostgreSQL 数据库托管与认证
  • Drizzle ORM – 类型安全的数据库查询与迁移
  • REST – 清晰的资源建模

功能模块

  • auth – 用户认证与授权
  • accounts – 账户类型:现金、借记卡、信用卡
  • transactions – 收入与支出记录
  • categories – 交易分类

我们将在整个系列中使用语义化版本号(例如 v0.1.0 → v0.1.1 → … → v1.0.0)。

引导 NestJS 应用

# 全局安装 Nest CLI
npm i -g @nestjs/cli

# 创建新项目
nest new finance-api

# 选择你喜欢的包管理器 (npm, yarn, 或 pnpm)

CLI 会生成一个干净的项目结构,包含:

  • TypeScript 配置
  • 基础模块、控制器和服务
  • 使用 Jest 的测试设置
  • ESLint 与 Prettier 配置

项目结构

src/
├── auth/             # 认证模块
├── accounts/         # 账户模块
├── transactions/     # 交易模块
├── categories/       # 分类模块
├── common/           # 共享工具、装饰器、守卫
│   ├── decorators/
│   ├── guards/
│   ├── interceptors/
│   └── filters/
├── config/           # 配置模块
├── database/         # 数据库连接与 Drizzle 设置
│   ├── migrations/
│   ├── schema/
│   └── seeds/
├── app.module.ts
└── main.ts

Supabase 提供的功能

  • 托管的 PostgreSQL 数据库,自动备份
  • 内置认证(邮箱/密码、OAuth、魔法链接)
  • 实时订阅(可用于未来功能)
  • 自动生成的 REST API(我们将自行构建)
  • 免费层足以满足开发需求

为什么选择 Drizzle ORM?

  • 完全的 TypeScript 类型安全,无需装饰器
  • 轻量且性能出色(比 TypeORM 更快)
  • 类 SQL 语法,易于学习
  • 迁移系统友好,适合版本控制
  • 与 NestJS 的模块化架构完美集成

考虑的替代方案: Prisma(很好,但 Drizzle 在查询控制和复杂关联的性能上更优)。

目前已完成的工作

  • ✅ 一个干净的 NestJS 项目,已准备好开发
  • ✅ 对整体架构的理解
  • ✅ 清晰的文件夹结构,便于代码组织
  • ✅ 了解我们为何选择 Supabase 与 Drizzle

下一步

查看目前的代码:

🔗 代码: [GitHub repository]

💡 下一篇文章: 我们将设置 Supabase。

Back to Blog

相关文章

阅读更多 »

歌词搜索者的音乐

概述 本应用允许用户通过提供乐队/艺术家名称和歌曲标题来搜索歌词。图形界面使用 St... 构建。