热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入探索Node.js新框架:Nest.js第六篇

在本文中,我们将深入探讨Node.js的新框架Nest.js,并通过一个完整的示例来展示其强大功能。我们将使用多个装饰器创建一个基本控制器,该控制器提供了多种方法来访问和操作内部数据,涵盖了常见的CRUD操作。此外,我们还将详细介绍Nest.js的核心概念和最佳实践,帮助读者更好地理解和应用这一现代框架。

完整示例

利用几个可用的装饰器来创建一个暴露了几个访问和操作内部数据方法的基本控制器。

/**
* @description: 包含常规 CRUD 的基本控制器示例
* @update: 2021-09-10 13:59:16
* @author: Ada.H
*/

// cats.controller.ts
import { Controller, Get, Query, Post, Body, Put, Param, Delete } from '@nestjs/common';
import { CreateCatDto, UpdateCatDto, ListAllEntities } from './dto';

@Controller('cats')
export class CatsController {
  @Post()
  create(@Body() createCatDto: CreateCatDto) {
    return '新增一只猫咪';
  }

  @Get()
  findAll(@Query() query: ListAllEntities) {
    return `查询 ${query.limit} 只猫咪`;
  }

  @Get(':id')
  findOne(@Param('id') id: string) {
    return `查询id为 ${id} 的猫咪信息`;
  }

  @Put(':id')
  update(@Param('id') id: string, @Body() updateCatDto: UpdateCatDto) {
    return `更新id为 ${id} 的猫咪信息`;
  }

  @Delete(':id')
  remove(@Param('id') id: string) {
    return `杀掉id为 ${id} 的猫咪`;
  }
}

最后一步

控制器总是属于模块。控制器已就绪,接下来需要在 @Module() 装饰器中包含控制器数组。

遵循官方建议:将每个模块保存在自己的专用目录中。代码如下:

// cats.module.ts

import { Module } from '@nestjs/common';
import { CatsService } from './cats.service';
import { CatsController } from './cats.controller';

@Module({
  controllers: [CatsController],
  providers: [CatsService]
})
export class CatsModule {}
// app.module.ts

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { CatsModule } from './cats/cats.module';

@Module({
  imports: [CatsModule],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

CRUD生成器

Nest CLI 提供了一个能够自动生成所有这些模板代码的生成器,避免手动建立,使开发体验变得更加简单。

nest g resource

# 添加参数 --no-spec 不生成测试文件
nest g resource cats --no-spec

图一:cmd 运行命令效果截图

注意:须在系统自带 Commond 面板执行 nest g resource

git bash 运行 nest g resource 报错。同时也无法通过方向键选择包安装器(npmyarn),控制器类型(HTTP 控制器,微服务控制器,GraphQL 处理器(代码优先或者原理优先),以及 WebSocket 网关)等选项。

图二:nest g resource 运行生成模板文件截图

在项目根目录下执行该命令来生成资源,不仅仅生成所有 Nest 构建文件(模块、服务、控制器类),也生成实体类,DTO 类和测试(.spec)文件。

Nest CLI 支持生成所有 CRUD 终端占位符(REST API 路径,GraphQL 查询和编译,微服务和 WebSocket 网关的消息订阅器)。

生成的资源类未与任何特定 ORM(或者数据源)绑定,以在任何项目下通用。


推荐阅读
author-avatar
嘲笑讽刺伤
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有