测试数据库:sql/test.sql
集成了如下技术:
- ORM:typeorm
- 接口:graphql
- 认证:passport
- 日志工具:nest-pino
开发之前请详细阅读项目中的所有文档(各个目录下的README.md
)文件,以及熟悉相关技术中提到的所有技术。
git clone https://github.com/YES-Lee/nestjs-graphql-starter.git # 拉取代码
cd nestjs-graphql-starter
yarn install
yarn start:dev
graphql plaground地址:http://localhost:3000/graphql
src
├─ config // 配置模块
├─ database // 数据库模块
│ └─ entities // 存放typeorm/graphql数据库模型
├─ decorators // 自定义装饰器目录
├─ graphql // graphql 模块
├─ enums // 枚举目录
├─ filters // error filters
├─ interceptors // interceptors
├─ pipes // pipes
└─ modules // 业务逻辑模块目录,所有业务相关逻辑都放到该目录对应的模块
所有业务相关的逻辑都应存放于modules
目录下,接口按照功能模块划分,通常以表为参考,即一张表(除关系表外)对应一个功能模块。例如:用户相关的功能,应该全部位于/modules/user/
目录下。
graphql
类型定义为自动化生成(schema.gql
),可以复用database/models
下的数据库模型,graphql定义的是http接口层对象,不应该返回的(如:password)等敏感字段,不建议定义grqphql类型
部署app方式有多种,这里提供一个pm2
管理方式,有三种部署方式,根据不同场景选择使用
- 编译:
npm run build
- 拷贝
package.json
,pm2.config.js
到dist
目录(需要修改pm2.config.js文件
) dist
目录上传到服务器- 到
dist
目录执行npm install --production
- 启动:
pm2 pm2.config.js
- 在服务器拉取仓库
npm install
npm run build
,pm2 pm2.config.js
nest g module modules/{your_module_name}
nest g service modules/{your_service_name}
nest g controller modules/{your_controller_name}
nest g resolver modules/{your_resolver_name}
- 基础1 [nodejs] https://nodejs.org/en/docs/
- 基础2 [typescript] https://www.tslang.cn/docs/home.html
- 项目框架 [nestjs] https://docs.nestjs.com/
- 框架平台 [express] https://expressjs.com/
- 数据库ORM框架 [typeorm] https://typeorm.io/
- 登录认证 [Passport.js] http://www.passportjs.org/
- 数据接口 [GraphQl] https://graphql.cn/
- WebSocket [socket.io] https://socket.io