# 图书管理后端 **Repository Path**: chimingchangyin/library-management-system ## Basic Information - **Project Name**: 图书管理后端 - **Description**: 本图书管理系统后端基于 NestJS 框架打造,采用 TypeScript 开发。提供完整 RESTful API,支持图书信息增删改查、用户注册登录等功能。使用文件系统存储数据,集成图片上传功能,适合用于构建图书管理类应用。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: https://cmcy.xyz - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-25 - **Last Updated**: 2025-07-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: Nestjs, TypeScript ## README # 图书管理系统后端

Nest Logo

基于 NestJS 构建的图书管理系统后端服务

## 目录 - [项目介绍](#项目介绍) - [技术栈](#技术栈) - [项目结构](#项目结构) - [环境要求](#环境要求) - [安装与运行](#安装与运行) - [API 文档](#api-文档) - [功能模块](#功能模块) - [测试](#测试) - [部署](#部署) - [贡献](#贡献) - [许可证](#许可证) - [常见问题](#常见问题) ## 项目介绍 本项目是一个基于 NestJS 框架构建的图书管理系统后端服务,提供了完整的 RESTful API 接口,支持图书信息的增删改查、用户管理等功能。系统使用文件系统作为数据库存储数据,实现了基本的 CRUD 操作,同时支持图片上传功能。 ## 技术栈 - [NestJS](https://nestjs.com/) - 用于构建高效、可扩展的 Node.js 服务器端应用程序的框架 - [TypeScript](https://www.typescriptlang.org/) - JavaScript 的超集,添加了静态类型定义 - [Multer](https://github.com/expressjs/multer) - 用于处理 `multipart/form-data` 类型的表单数据,实现文件上传 - [Class-validator](https://github.com/typestack/class-validator) - 用于数据验证 - [Jest](https://jestjs.io/) - JavaScript 测试框架 - [Supertest](https://github.com/visionmedia/supertest) - HTTP 断言库,用于接口测试 ## 项目结构 ```plaintext library-management-system/ ├── .gitignore ├── .prettierrc ├── LICENSE ├── README.md ├── eslint.config.mjs ├── nest-cli.json ├── package-lock.json ├── package.json ├── src/ │ ├── app.controller.ts │ ├── app.module.ts │ ├── app.service.ts │ ├── book/ │ │ ├── book.controller.ts │ │ ├── book.module.ts │ │ ├── book.service.ts │ │ ├── dto/ │ │ ├── entities/ │ │ └── my-file-storage.ts │ ├── db/ │ │ ├── db.module.ts │ │ └── db.service.ts │ ├── main.ts │ └── user/ │ ├── dto/ │ ├── entities/ │ ├── user.controller.ts │ ├── user.module.ts │ └── user.service.ts ├── test/ │ ├── app.e2e-spec.ts │ └── jest-e2e.json ├── tsconfig.build.json ├── tsconfig.json └── uploads/ ``` ## 环境要求 - Node.js >= 16.x - npm 或 yarn ## 安装与运行 ```bash # 克隆项目 git clone https://github.com/your-username/book-management-system-backend.git # 进入项目目录 cd book-management-system-backend # 安装依赖 npm install # 启动开发服务器 npm run start:dev ``` ## API 文档 项目使用 Swagger 生成 API 文档,当前项目未集成 Swagger,若需要可自行添加。开发环境下可以参考以下接口说明: ### 图书接口 | 方法 | 路径 | 描述 | |------|------|------| | POST | /book/upload | 上传图书封面图片 | | GET | /book/list | 获取图书列表,可按名称筛选 | | GET | /book/:id | 根据 ID 获取图书详情 | | POST | /book/create | 创建新图书 | | PUT | /book/update | 更新图书信息 | | DELETE | /book/delete/:id | 根据 ID 删除图书 | ### 用户接口 | 方法 | 路径 | 描述 | |------|------|------| | POST | /user/register | 用户注册 | | POST | /user/login | 用户登录 | ## 功能模块 ### 图书模块 - 图书信息的增删改查 - 图书封面图片上传 - 按名称筛选图书列表 ### 用户模块 - 用户注册 - 用户登录 ### 数据库模块 - 使用文件系统存储数据 - 支持 JSON 数据的读写操作 ## 测试 ```bash # 运行单元测试 npm run test # 运行端到端测试 npm run test:e2e # 生成测试覆盖率报告 npm run test:cov ``` ## 部署 项目可以部署到任何支持 Node.js 的平台上,如 Heroku、Vercel、AWS 等。部署步骤如下: 1. 在本地运行 `npm run build` 构建项目 2. 将 `dist` 目录和 `package.json` 文件上传到服务器 3. 在服务器上运行 `npm install --production` 安装生产依赖 4. 运行 `npm run start:prod` 启动生产服务器 ## 贡献 欢迎提交 Issue 和 Pull Request 来改进项目。在提交 Pull Request 前,请确保: 1. 代码通过了所有测试 2. 添加了必要的文档和注释 3. 遵循项目的代码风格 ## 许可证 MIT License Copyright (c) 2025 池溟昌胤 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## 常见问题 ### 1. 为什么上传图片失败? 确保上传的文件为 `.png`, `.jpg`, `.gif` 格式,且文件大小不超过 3MB。 ### 2. 如何修改数据存储路径? 可以在 `src/book/book.module.ts` 和 `src/user/user.module.ts` 中修改 `DbModule.register` 方法的 `path` 参数。 ### 3. 如何运行测试? 参考 [测试](#测试) 章节的命令。