nest
About 2 min
nest
https://nest.nodejs.cn/providers
创建项目
$ npm i -g @nestjs/cli
$ nest new project-name
项目核心文件的简要概述:
app.controller.ts | 具有单一路由的基本控制器。 |
---|---|
app.controller.spec.ts | 控制器的单元测试。 |
app.module.ts | 应用的根模块。 |
app.service.ts | 具有单一方法的基本服务。 |
main.ts | 使用核心函数 NestFactory 创建 Nest 应用实例的应用入口文件。 |
#
运行应用$ npm run start
为了加快开发过程(构建速度加快 20 倍),你可以通过将 -b swc
标志传递给 start
脚本来使用 SWC 构建器,如下所示 npm run start -- -b swc
。
注意:使用 npm run start -- -b swc
需要下载相关依赖
#要监视文件中的更改,此命令将监视你的文件,自动重新编译并重新加载服务器。 (推荐)
$ npm run start:dev
增删改查生成器(仅限 TypeScript)
https://nest.nodejs.cn/recipes/crud-generator#增删改查生成器(仅限-typescript)
controller
快速生成资源
nest g resource [name]
请求参数获取
import { Controller, Get, Req } from '@nestjs/common';
import { Request } from 'express';
@Controller('cats')
export class CatsController {
@Get('list')
findAll(@Req() request: Request): string {
return 'This action returns all cats';
}
}
提示 : 为了利用 express
类型(如上面的 request: Request
参数示例),请安装 @types/express
软件包
@Req 返回的内容太多,可以使用开箱即用的专用装饰器,例如 @Body()
或 @Query()
。下面是提供的装饰器列表和它们代表的普通平台特定对象。
@Request(), @Req() | req |
---|---|
@Response(), @Res() ***** | res |
@Next() | next |
@Session() | req.session |
@Param(key?: string) | req.params / req.params[key] |
@Body(key?: string) | req.body / req.body[key] |
@Query(key?: string) | req.query / req.query[key] |
@Headers(name?: string) | req.headers / req.headers[name] |
@Ip() | req.ip |
@HostParam() | req.hosts |
示例: @Query()
import { Controller, Get, Query } from '@nestjs/common';
@Controller('user')
export class UserController {
@Get('list')
findAll(@Query() query: any): string {
console.log(query);
return '123';
}
}
// 访问:http://localhost:3000/user/list?a=1&b=2
// 返回 { a: '1', b: '2' }
路由参数
提示从 @nestjs/common
包中导入 Param
。
@Get(':id')
findOne(@Param() params: any): string {
console.log(params.id);
return `This action returns a #${params.id} cat`;
}
@Get(':id')
findOne(@Param('id') id: string): string {
return `This action returns a #${id} cat`;
}
异步性
数据提取大多是异步的。这就是 Nest 支持 async
功能并与它配合使用的原因。
@Get()
async findAll(): Promise<any[]> {
return [];
}
上面的代码是完全有效的。此外,Nest 路由处理程序更强大,因为它能够返回 RxJS 可观察流。Nest 将自动订阅下面的源并获取最后触发的值(一旦流完成)。
@Get()
findAll(): Observable<any[]> {
return of([]);
}
Providers(service)
快速创建Providers
$ nest g service [name]
mysql数据库连接
https://nest.nodejs.cn/techniques/database#数据库
TypeORM:https://typeorm.bootcss.com/
$ npm install --save @nestjs/typeorm typeorm mysql2
Loading...