nest.js学习
Posted lin-fighting
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nest.js学习相关的知识,希望对你有一定的参考价值。
官网介绍
nest是基于express的,其设计很多源自与anglur,跟java的spring框架很像。
基本架构
每个模块都有
控制器controoler,
app模块module,
和一个service服务,提供数据
先看module
使用装饰器装饰,将app的控制器和服务都注入到该类,若有其他app的子模块,还可以注入到imports,这样就会注册该子模块。
入口文件
入口文件则是根据根模块appmodule创建了一个服务,并且将其监听在3000端口号,在这里可以做一些全局的中间件,比如链接数据库等等。
架构图
控制器
这里可以配置路劲,返回的数据等操作,当页面输入路劲匹配到的就是这里的代码。
服务
为控制器提供数据。
nest是以模块为基准的。如
每个模块又有自己的控制器,服务等等。
如图
admin这个模块在main.ts中注册,然后,admin下还有其他子模块,
他们也需要注册,在admin模块中注册
将他们三个模块都注册,
每个子模块又有自己的module和控制器,所以当有孙模块时,也要在子模块注册。
这就是nest的基础架构了。
db数据库的连接
admin这里不但注册了子模块,还注册了一个mongodb模块,数据库在nest中也当作一个模块,
先看db.module
在imports注入集合的时候,连接数据库,然后导入集合类型,mongodb的所有集合必须通过在这里注入才能生效。
而exports是将其集合导出。
每个集合的操作
每个集合也是一个类,通过装饰器可以加强该类,而username和password就是我们要定义的属性,而其上的装饰器都是一些特定写法。
然后将该集合注入到db.module并且导出,在admin模块注入,这样当启动serve的时候就会自动连接数据库。
admin与其子模块如何使用数据库
在根模块注册db模块后,在子模块中,需要依赖注入各个想使用的集合。
在user模块中想使用post集合,
注入依赖
将post集合通过装饰器注入,然后定义postmodel属性。这样这个postmodel属性可以访问到post集合。如
可以实现操作数据库的方法了。
这就是db数据库的使用。
以上是关于nest.js学习的主要内容,如果未能解决你的问题,请参考以下文章
nest.js学习静态资源配置和模板引擎+服务Service+cookie+session
无论如何在 Nest.js 中使用 Fastify 获取请求、响应的类型接口