Nest-入手Demo
简单了解一些Nest
,结合之前我开发的一个小工具日志上报插件,做一个小应用;
这个应用是什么? 有这么一个场景,我在web
页面使用了日志上报插件
,但是插件的dsn
地址是没有的,这个地址需要后端的一个接口地址,那我们用Nest
模式一下这个接口地址;
接下来,实践一下:
初始化项目
首先,去官网找一下安装命令
1 | npm i -g @nestjs/cli |
安装成功之后,所有的代码都是ts
编写的; 关于项目的目录结构,可以参考官方文档有具体说明;
我们找到入口文件:main.ts
, 其中bootstrap()
就是启动函数了;
1 | async function bootstrap() { |
修改之后,执行命令npm run start
就可以了,不过这里可以使用npm run start:dev
,只有文件变动了服务就会重新启动;就不需要每次修改之后在重启;
实现添加功能
数据库
添加数据肯定需要数据库哇,那我们先添加下载数据库插件,我这里使用的Mongoose,mongodb
; 具体可查看Nest Mongo
关于本地如何安装mongodb
以及如何使用,可查看基础文档MongoDb 教程
1 | npm i --save @nestjs/mongoose mongoose |
然后在app.module.ts
中添加配置
1 | import { MongooseModule } from '@nestjs/mongoose'; |
保存之后重新启动,如果出现数据库一直尝试链接那么说明你本地没有正确安装mongoose
服务,或者您的数据库链接可能不正确;
添加一个日志模块
要想添加一个日志模块,你可以手动在src
目录下添加目录为logs
的文件夹,在文件夹下添加对应的文件;
不过我不建议你手动添加,不仅麻烦,而且也不好管理;
可以通过命令nest
去添加;想要知道命令有哪些,可以在shell
工具中输入nest
然后回车;
然后使用命令nest g name dirFile
;
我们直接使用nest g resource logs
, 回车选择对应的Api模式
, 之后就会生成一个完整模块的目录了;使用命令添加还会自动在app.modules.ts
添加对应的模块哦~
创建完之后,就可以在src
目录下找到你的文件夹或者文件了
创建一个控制器
在logs.controller.ts
中添加一个方法,用来添加logs
数据
1 | // 请求的前缀:https://xxx.com/logs |
接着我们添加数据库需要的字段以及数据表;
添加数据表以及对应表结构
1 | import { Prop, Schema, SchemaFactory } from "@nestjs/mongoose"; |
大概的数据表结构就定好了;
我们在logs.module.ts
引入我们创建的表
1 | // 这个是你实际创建数据表的地址, LogSchema就是你导出的表 |
添加服务层
在logs.service.ts
中添加一个create
方法
1 | interface CreateLogDto { |
使用
可以使用postman
或者apipost
或者apifox
测试; 具体工具如何使用,自行百度官网;
添加一个post
接口,接口地址就是localhost:3000/logs/setLog
, 参数就是上面自定义的接口interface CreateLogDto
, 然后点击发送就可以了;
那么一个小应用就基本完成了;