当前位置: 首页 > 网络应用技术

nest.js迅速入门:mysql单表的CRUD

时间:2023-03-05 20:56:47 网络应用技术

  Nest.js是基于Node.js的后端开发框架。它实现了MVC模式,即模型,视图和控制器的层。响应库具有更高的级别。它也很容易整合诸如GraphQl,WebSocket之类的功能,该功能适用于大型企业 -水平发展。

  Nest.js在国内外使用了很多。让我们从今天开始:执行笔记管理功能,以实现MySQL的添加,删除,删除和更改,并提供恢复的界面。

  完整代码:https://github.com/quarkgluonplasma/nestjs-earcerize

  首先,从远离前端的数据库开始。

  在MySQL的官方网站上下载MySQL,安装并启动服务。

  目前,您可以使用命令行来编写SQL操作数据库。

  但是命令行不够方便,因此我们还希望下载接口MySQL客户端。我在这里使用navicat。

  它可以在视觉上创建数据库,表等,并可以在编辑器中编写SQL,然后执行。例如,我创建了Hello的数据库和图中的一堆表。

  Node.js代码也可以连接到数据库服务,然后远程执行SQL以添加和删除数据库表。

  但是直接执行SQL是很乏味的。我只能操作对象吗?如果对象属性更改,它将自动执行SQL以同步数据库?就像Vue的数据更改为自动同步视图一样。

  数据库和对象之间关系的映射称为ORM(对象关系映射),该映射是将表映射到对象中,以将表和表之间的关联映射到对象之间的关系中。通过SQL将与数据库同步。

  Typeorm是实现ORM的框架。它可以描述装饰设备的映射关系,例如@entity,@column(列),@primary gripartcolumn

  在Decorator声明关系之后,在建立数据库连接后,我们只需要操作对象,TypeOmm将自动执行SQL即可将更改同步到数据库。

  通过这种方式,我们实现了我们对数据库表的操作以及添加,删除,删除和检查的操作。

  完成数据库部分后,我们期待处理请求的一部分。

  请求的后端框架使用Nest.js,它提供了控制器,服务和其他部门,这是MVC模式的实现。

  控制器负责处理请求并将处理参数传递给服务。

  服务负责实现业务逻辑,并且可以实现基于类型的添加,删除和调查功能,以实现各种高层业务逻辑。

  另外,Nest.js还将模块划分。该模块是逻辑模块。与我们经常说的文件相对应的模块不同,它包含控制器,服务等,这是这些资源的逻辑划分。

  模块和模块之间可能存在因关系,并且有进口和导出。

  因此,模块语句是这样的:

  BBB模块是通过@Module Decorative设备声明的,该设备取决于AAA模块,即在ImportS.Controller中引入的AAAMODULE,包括BBBController,包括BBBController,提供商是提供商,具有服务,工厂,工厂和其他类型。它包括bbbbservice。同时,可以由其他模块引入BBBBSERVICE。

  控制器的陈述也是通过装饰员:

  服务语句也是装饰器,但不称为服务,而是被称为注射剂。

  至于为什么被称为注射剂,它涉及IOC的概念。

  IOC(控制倒数)是控制反转的含义,即,您只需要声明自己的依赖性,就不需要创建依赖对象,并且容器将其注入您。

  因为所有对象均由容器管理,因此自然可以在创建对象时注入所需的依赖项。这是IOC的原则。

  服务可以用作取决于其他类别的实例,因此使用了可注射的装饰。

  所有模块都将具有一个模块作为入口,启动IOC容器从此模块开始:

  以上是典型的NEST.JS启动代码,从AppModule模块开始,以创建一个IOC容器,以处理端口3000的请求。

  Reflect-Metadata模块是用于分析课程的装饰器,因为要在类中注入实例,必须解析它通过装饰器依赖于什么依赖性,然后将其注入。您需要依靠此软件包。

  这是Nest.js:IOC + MVC的大致设计,通过IOC容器管理对象的相关关系,并使用控制器,服务,模块来划分职责。

  typeorm是通过SQL同步对象的操作到数据库的ORM,而Nest.js是Web Back -End应用程序的MVC层,以及IOC管理对象的创建和依赖性。这些两个自然合并,并且是合并的。组合是 @nestjs/typeorm。

  @nestjs/typeorm pack提供TypeorMmodule模块,该模块具有两个静态方法和Forture。

  Forrot用于创建数据库连接,引入一些配置参数,并将其引入导入模块。

  ForFeature用于创建与不同实体类相对应的存储库,并将其引入实体的模块中。

  我们知道什么typeorm和nest.js正在做什么以及如何使用它,只需总结:

  typeorm是ORM框架。它用于将对象的操作同步到数据库的操作,并将自动执行SQL语句。

  nest.js是MVC框架,用于Web Back -End应用程序的逻辑层中。它还提供了进一步分配控制器和服务的模块。此外,nest.js提供了一个IOC容器,统一管理对象的创建和依赖性以及从该语句中注入依赖项。

  两者的组合是 @nestjs/typeorm的袋子。它有两种生成模块的静态方法。

  说了很多话,每个人都可能不太清楚它,所以让我们做笔记的实际情况。

  nest.js有很多模型代码。自己写作更麻烦。

  首先,您需要设置骨架,使用

  然后生成特定的模块代码

  生成的代码包含控制器,服务,模块,还具有CRUD模型代码。

  让我们关注控制器守则:

  @controller的参数可以声明url路径。@get,@post,@patch,@delete还可以通过参数声明URL路径,最终将与两者进行对抗。例如, /xxx /:id方法。

  @get,@post,@patch,@delete分别对应于不同的请求方法。

  @Param是道路上的参数,@q是查询字符串的参数。

  @Body将请求参数设置为对象的属性。用于传递数据的对象称为DTO(数据传输对象)。

  然后,返回对象将在没有手动序列化的情况下序列化为JSON。

  然后查看服务:

  这些服务尚未详细实施。

  我们将Typeorm介绍给数据库的CRUD。

  在根模块中介绍数据库连接的模块

  与新创建的模块中实体相对应的模块:

  创建一个note entity并识别 @entity。并使用@column, @primarygeneratedColumn来识别列和主键。

  然后,将操作类存储库注入服务中的服务,您可以实现额外的删除和更改注释。

  使用的DTO是与参数相对应的对象,它们是实体属性的一部分的集合。例如,更新DTO:

  通过这种方式,实现了增加,删除和更改的说明。

  我们使用Postman测试效果:

  运行并运行项目

  您可以看到4个接口的路由映射成功。

  数据库开头有两个记录:

  可以通过查询接口正确找到它:

  然后测试修改接口:

  确实修改了数据库:

  测试后,单个表的CRUD的功能正常。

  我们完成了第一个nest.js的后端应用程序!

  完整的代码上传github:https://github.com/quarkgluonplasma/nestjs-earpercize

  typeorm是一个ORM框架。通过映射表和对象之间的相应关系,可以将对象的操作转换为数据库的操作,并自动执行SQL语句。

  NEST.JS是一个MVC框架,可提供模块,控制器和服务的逻辑逻辑划分,还实现IOC模式,集中管理对象和自动注入依赖项。

  typeorm和nest.js使用 @nestjs/typeoorm的软件包的组合,该软件包提供了两个静态方法:forroot和forfeature.forroot方法用于生成已连接到数据库的模块,并且ForFeature用于生成模块的模块。与实体相对应的存储库。

  nest.js具有很多模型代码,可以使用 @nestjs/cli命令行工具(包括总体和每个模块)生成。

  简而言之,即使您最初掌握了nest.js,也可以理解IOC和理解模块,控制器和服务的划分,ORM框架与TypeOmm结合使用,可以轻松地完成数据库表的CRUD。

  nest.js是一个相对强大且流行的后端框架。仍然有必要学习它。我们进入了本文的大门,并将继续加深。