本项目是NestJS
技术图书 《NestJS全栈开发解析:快速上手与实践》 的实战项目,于2024.9月上线。
$ pnpm install
运行项目之前,首先确保本机安装了MySQL数据库,并创建名为store_web_project
的数据库,同时在.env
文件中配置好数据库连接信息。其次,需要安装并启动Redis数据库。
# development
$ pnpm start
# watch mode
$ pnpm start:dev
# production mode
$ pnpm start:prod
-
由于项目中权限是环环相扣,如果你使用Postman等接口调试工具,大部分接口需要有access_token验证,意味着需要登录,登录前需要注册,注册需要获取验证,这些都可以在日志中看到。
-
除此之外,注册之后还不能调用某些接口,因为当前用户的权限集需要分配,你可以往db中添加数据,或者直接导入
sql
目录下的store_web_project.sql
到db中。 -
项目中.http已经创建了一些接口测试案例,你可以直接使用。
-
运行过程中如果出现接口500错误,Nest服务有打印出每个请求日志,你可以在日志中查看到具体错误。
# unit tests
$ pnpm test
# e2e tests
$ pnpm test:e2e
# test coverage
$ pnpm test:cov
-
class-transformer采用0.3.x版本,使用plainToClass|classToPlain方法操作对象或实体, 不指定默认会安装0.5.x版本,这个版本废弃了前面两个api,使用plainToInstance|instanceToPlain代替,要想使用最新api,可能会报错缺少class-transformer/storage包,此时删除项目中@nestjs/types包即可
-
chalk包使用^4.1.2版本,超过5.x是breaking version,应该使用ESM模式
jwt-auth.guard.ts 用于验证用户session状态 role-auth.guard.ts 用于验证用户接口权限
JWTModule注册在user模块中,当然也可以注册到auth模块中统一管理,生成和验证access_token就在auth.service.ts中进行
├── README.md
├── nest-cli.json
├── package.json
├── pnpm-lock.yaml
├── src
│ ├── activity
│ │ ├── activity.controller.ts
│ │ ├── activity.module.ts
│ │ ├── activity.service.ts
│ │ ├── dto
│ │ ├── entities
│ │ └── start-activity.service.ts
│ ├── app.controller.spec.ts
│ ├── app.controller.ts
│ ├── app.module.ts
│ ├── app.service.ts
│ ├── auth
│ │ ├── auth.module.ts
│ │ ├── auth.service.ts
│ │ ├── jwt-auth.guard.ts
│ │ ├── jwt.strategy.ts
│ │ └── role-auth.guard.ts
│ ├── common
│ │ ├── decorators
│ │ ├── enums
│ │ ├── http-exceptions.filter.ts
│ │ ├── logger
│ │ ├── logger.middleware.ts
│ │ ├── mail
│ │ ├── redis
│ │ ├── response.interceptor.ts
│ │ └── utils
│ ├── logs
│ │ ├── application-2024-04-05.error.log.gz
│ │ ├── application-2024-04-05.info.log.gz
│ │ ├── application-2024-04-06.error.log
│ │ ├── application-2024-04-06.info.log.gz
│ │ ├── application-2024-04-07.error.log
│ │ └── application-2024-04-07.info.log
│ ├── main.ts
│ ├── order
│ │ ├── dto
│ │ ├── entities
│ │ ├── order.controller.ts
│ │ ├── order.module.ts
│ │ └── order.service.ts
│ ├── permission
│ │ ├── dto
│ │ ├── entities
│ │ ├── permission.controller.ts
│ │ ├── permission.module.ts
│ │ └── permission.service.ts
│ ├── product
│ │ ├── dto
│ │ ├── entities
│ │ ├── hot-sales.service.ts
│ │ ├── product.controller.ts
│ │ ├── product.module.ts
│ │ └── product.service.ts
│ ├── role
│ │ ├── dto
│ │ ├── entities
│ │ ├── role.controller.ts
│ │ ├── role.module.ts
│ │ └── role.service.ts
│ ├── sys
│ │ ├── dto
│ │ ├── sys.controller.ts
│ │ ├── sys.module.ts
│ │ └── sys.service.ts
│ └── user
│ ├── dto
│ ├── entities
│ ├── user.controller.ts
│ ├── user.module.ts
│ └── user.service.ts
├── tsconfig.build.json
└── tsconfig.json
如需部署到生产环境或Docker环境,需要区分各个服务地址,如Nest服务、Redis MySQL服务,它们在Docker和开发环境的host配置是不一样的,对应不同环境的.evn文件。
在项目运行中有遇到任何问题,请直接与作者联系!
需要加入交流群探讨学习,直接扫描下方二维码,如过期请添加作者WeChat!
作者WeChat:
作者公众号:
项目交流群:
图书购买链接:京东
图书购买链接:当当
事实证明,群众的眼睛总是雪亮的。即使经过笔者和编辑人员重复的审查,但错误总是无法完全避免,通过读者反馈,我们收集了书籍中存在可纠正的几点问题:
- 章节2.2.1 Nest CLI的安装:
npm install -g @Nestjs/cli
及npm update -g @Nestjs/cli
命令中,cli的包名应为小写的@nestjs/cli
- 章节3.4.1 类中间件:
我们指定中间件应用在/person路径
应为我们指定中间件应用在/user路径
- 章节4.1.3 可视化操作MySQL:
接着来设计product表,新增updateTime(创建时间)
应为接着来设计product表,新增updateTime(更新时间)
- 2024.10.26 新增Excel导入导出服务,支持Excel导入产品数据到db,导出db数据到Excel。
- 2024.11.10 新增爬虫服务,支持自定义爬虫内容、自动反爬等功能。