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+Vue实战:工作计划管理系统

无论如何在 Nest.js 中使用 Fastify 获取请求、响应的类型接口

Nest JS GraphQL“不能为非空返回null” [重复]

Nest.js 全局守卫

Nest.js 获取注入器实例