logo
1
0
WeChat Login

NestJS SQLite 基础开发架构

基于 NestJS、TypeScript 和 SQLite 构建的基础开发架构,包含用户认证、JWT Token 验证、RESTful API 等功能。

功能特性

  • NestJS 框架 - 现代化的 Node.js 后端框架
  • TypeScript - 类型安全的 JavaScript 超集
  • SQLite 数据库 - 轻量级的嵌入式数据库
  • TypeORM - 强大的 ORM 框架
  • JWT 认证 - 基于 JSON Web Token 的身份验证
  • 用户管理 - 完整的用户注册、登录、管理功能
  • API 验证 - 使用 class-validator 进行数据验证
  • 密码加密 - 使用 bcryptjs 进行密码哈希
  • CORS 支持 - 跨域资源共享配置

项目结构

src/
├── app.controller.ts          # 应用主控制器
├── app.module.ts              # 应用主模块
├── app.service.ts             # 应用主服务
├── main.ts                    # 应用入口文件
├── auth/                      # 认证模块
│   ├── auth.controller.ts     # 认证控制器
│   ├── auth.module.ts         # 认证模块
│   ├── auth.service.ts        # 认证服务
│   ├── dto/                   # 数据传输对象
│   │   ├── login.dto.ts
│   │   └── register.dto.ts
│   ├── guards/                # 守卫
│   │   ├── jwt-auth.guard.ts
│   │   └── local-auth.guard.ts
│   └── strategies/            # 策略
│       ├── jwt.strategy.ts
│       └── local.strategy.ts
├── users/                     # 用户模块
│   ├── users.controller.ts    # 用户控制器
│   ├── users.module.ts        # 用户模块
│   ├── users.service.ts       # 用户服务
│   ├── dto/                   # 数据传输对象
│   │   ├── create-user.dto.ts
│   │   └── update-user.dto.ts
│   └── entities/              # 实体
│       └── user.entity.ts
└── demo/                      # 演示模块
    ├── demo.controller.ts     # 演示控制器
    └── demo.module.ts         # 演示模块

快速开始

环境要求

  • Node.js >= 16.0.0
  • npm >= 8.0.0

安装依赖

npm install

启动开发服务器

# 开发模式(热重载)
npm run start:dev

# 生产模式
npm run start:prod

# 调试模式
npm run start:debug

应用程序将在 http://localhost:3000 启动。

构建项目

npm run build

API 接口文档

基础接口

健康检查

GET /health

响应示例:

{
  "status": "ok",
  "timestamp": "2024-01-01T00:00:00.000Z",
  "message": "NestJS SQLite 基础架构运行正常"
}

认证接口

用户注册

POST /auth/register
Content-Type: application/json

{
  "username": "testuser",
  "email": "test@example.com",
  "password": "123456",
  "firstName": "张",
  "lastName": "三"
}

用户登录

POST /auth/login
Content-Type: application/json

{
  "username": "testuser",
  "password": "123456"
}

响应示例:

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "user": {
    "id": 1,
    "username": "testuser",
    "email": "test@example.com",
    "firstName": "张",
    "lastName": "三"
  }
}

用户接口(需要认证)

所有用户接口都需要在请求头中包含 JWT Token:

Authorization: Bearer <your-jwt-token>

获取用户列表

GET /users

获取当前用户信息

GET /users/profile

获取指定用户

GET /users/:id

更新用户信息

PATCH /users/:id
Content-Type: application/json

{
  "firstName": "李",
  "lastName": "四"
}

删除用户

DELETE /users/:id

演示接口

公开接口

GET /demo/public

受保护接口(需要认证)

GET /demo/protected
Authorization: Bearer <your-jwt-token>

用户信息接口(需要认证)

GET /demo/user-info
Authorization: Bearer <your-jwt-token>

数据库

项目使用 SQLite 数据库,数据库文件会自动创建在项目根目录下的 database.sqlite

用户表结构

字段类型说明
idINTEGER主键,自增
usernameVARCHAR用户名,唯一
emailVARCHAR邮箱,唯一
passwordVARCHAR密码(加密存储)
firstNameVARCHAR名字(可选)
lastNameVARCHAR姓氏(可选)
isActiveBOOLEAN是否激活,默认 true
createdAtDATETIME创建时间
updatedAtDATETIME更新时间

文档

环境变量

可以创建 .env 文件来配置环境变量:

# JWT 密钥
JWT_SECRET=your-secret-key

# 数据库配置
DATABASE_PATH=database.sqlite

开发指南

添加新的模块

  1. 使用 NestJS CLI 生成模块:
nest generate module feature-name
nest generate controller feature-name
nest generate service feature-name
  1. app.module.ts 中导入新模块

添加新的实体

  1. 在相应模块的 entities 目录下创建实体文件
  2. app.module.ts 的 TypeORM 配置中添加实体
  3. 重启应用以同步数据库结构

数据验证

使用 class-validator 装饰器进行数据验证:

import { IsEmail, IsNotEmpty, MinLength } from 'class-validator';

export class CreateUserDto {
  @IsNotEmpty({ message: '用户名不能为空' })
  username: string;

  @IsEmail({}, { message: '邮箱格式不正确' })
  email: string;

  @MinLength(6, { message: '密码长度至少6位' })
  password: string;
}

部署

生产环境部署

  1. 构建项目:
npm run build
  1. 启动生产服务:
npm run start:prod

Docker 部署

可以创建 Dockerfile 进行容器化部署:

FROM node:18-alpine

WORKDIR /app

COPY package*.json ./
RUN npm ci --only=production

COPY dist ./dist

EXPOSE 3000

CMD ["node", "dist/main"]

许可证

ISC

贡献

欢迎提交 Issue 和 Pull Request!

联系方式

如有问题,请通过以下方式联系:

  • 创建 GitHub Issue
  • 发送邮件至项目维护者

注意:这是一个基础开发架构,适合用作项目起点。在生产环境中使用前,请确保:

  1. 更改默认的 JWT 密钥
  2. 配置适当的数据库(如 PostgreSQL、MySQL)
  3. 添加适当的日志记录
  4. 实施适当的错误处理
  5. 添加单元测试和集成测试
  6. 配置适当的安全措施

About

nestjs 基础架子

Language
TypeScript72.5%
Markdown26.2%
gitignore1.3%