SuperAPI AI 工具集

nodejs-backend

编程与开发

查看项目

更新于 10-15 13:34

技能介绍

用途

该技能用于指导 Node.js 后端项目的工程化开发,围绕 Express/Fastify 与仓储模式(Repository Pattern)组织代码,强调业务逻辑与副作用分离、依赖注入、输入校验和错误处理。

项目结构

采用分层目录:

  • src/core/:纯业务逻辑,包含 types.ts(领域类型)、errors.ts(领域错误)与 services/(纯函数,如 user.ts、order.ts)。
  • src/infra/:副作用层,包含 http/(server.ts 服务启动、routes/ 路由处理器、middleware/ Express 中间件)、db/(client.ts 数据库连接、repositories/ 数据访问、migrations/ 结构迁移)、external/(第三方 API)。
  • src/config/:配置,index.ts 负责环境变量校验。
  • src/index.ts:入口点。
  • tests/:分为 unit/ 与 integration/。
  • 根目录含 package.json 与 CLAUDE.md。

主要能力

API 设计

路由处理器模式:在 routes/users.ts 中引入 Router、zod、核心服务与仓储,定义 CreateUserSchema(email 为邮箱格式,name 长度 1–100),通过 createUserRoutes(userRepo) 返回路由,POST 处理中解析请求体、调用服务并返回 201,异常交给 next(error)。

组合根依赖注入:在 index.ts 中创建数据库客户端、实例化 UserRepository,再通过 createApp({ userRoutes: createUserRoutes(userRepo) }) 组装应用并监听 3000 端口。

错误处理

领域错误:DomainError 继承 Error,携带 code 与 statusCode(默认 400);NotFoundError 返回 404 与 NOT_FOUND;ValidationError 返回 400 与 VALIDATION_ERROR。

全局错误处理器:errorHandler 中间件区分 DomainError(按状态码返回 code 与 message)、ZodError(返回 400 与校验详情),其余记录日志并返回 500 与 INTERNAL_ERROR。

数据库模式

仓储模式:UserRepository 基于 Kysely,提供 findById(查询 users 表,无结果返回 null)与 create(插入并返回全部字段)。

事务:transferFunds 使用 db.transaction().execute,在事务内对 accounts 表执行余额加减更新。

配置

使用 Zod 定义 ConfigSchema,校验 NODE_ENV(development/production/test)、PORT(默认 3000)、DATABASE_URL(URL 格式)、API_KEY(非空),通过 loadConfig() 解析 process.env。

测试

单元测试针对 core 服务,使用 mock 仓储(如 jest.fn())验证 createUser 行为与调用次数。集成测试使用 supertest 与测试辅助函数 createTestApp、createTestDb,验证 POST /users 返回 201 及响应体。

使用方式

资料未提供安装命令或具体调用步骤,仅给出代码示例与目录约定,可据此在项目中落地相应模式。

适用场景

适用于需要清晰分层、可测试、可维护的 Node.js 后端服务开发,尤其是使用 Express/Fastify 与 Kysely 的项目。

限制与反模式

资料列出应避免的做法:回调地狱(应使用 async/await)、未处理的 Promise 拒绝、阻塞事件循环、代码中硬编码密钥、SQL 字符串拼接、缺少输入校验、生产环境使用 console.log、缺少优雅关闭(应处理 SIGTERM)、单体式路由文件(应按资源拆分)。