crayon-shin-chan
这个作者很懒,什么都没留下…
展开
-
记一个 nest.js 路由匹配后面所有路径问题
一般路径参数只能匹配一个部分,只能匹配/view/aaa,不能匹配 /view/aaa/bbb。原创 2022-08-08 17:27:38 · 522 阅读 · 0 评论 -
nest.js入门之 database
文档:https://docs.nestjs.com/techniques/databaseNest 与数据库无关,可以轻松与任何 SQL 或 NoSQL 数据库集成。可以直接使用任何通用的 Node.js 数据集成库或 ORM,如Nest 提供了与 TypeORM 和 Sequelize 的紧密集成,分别使用要开始使用它,首先安装所需的依赖项。安装完成后,把TypeOrmModule导入到 AppModule中。不应在生产中使用 synchronize: true 设置,否则可能会丢失生产数据原创 2022-07-06 23:14:28 · 337 阅读 · 0 评论 -
记一个 @nestjs/typeorm^8.1.4 版本不能获取.env选项问题
在 typeorm 中,本可以通过 .env文件来配置连接选项但是在升级到 @nestjs/typeorm^8.1.4 typeorm^0.3.7后,就去掉了这个功能可以使用 ConnectionOptionsReader 来解决ConnectionOptionsReader 会在内部加载各种配置文件...原创 2022-07-05 16:59:12 · 413 阅读 · 0 评论 -
nest.js实战之模块依赖传递性
nest.js的模块依赖主要是通过 imports / exports来指定的单独两个模块之间的关系很简单,A exports 组件, B imports A ,然后使用组件但是多个模块依赖传递的效果就有疑问了在nest.js中 exports 不可传递,间接导入模块,无法使用其组件CatsModule export了 CatsServiceAppModule导入DogsModule,DogsModule导入了CatsModule此时AppService无法解析CatsService依赖,必须在原创 2022-06-20 23:18:22 · 398 阅读 · 1 评论 -
nest.js入门之快速使用
文档:Documentation | NestJS - A progressive Node.js framework1.简介Nest (NestJS) 是一个用于构建高效、可扩展的Node.js服务器端应用程序的框架。使用TypeScript构建并完全支持JavaScript 进行编码结合了 OOP(面向对象编程)、FP(函数式编程)和 FRP(函数式反应式编程)的元素。Nest 使用了强大的 HTTP 服务器框架,Express(默认),并且可以选择配置为使用Fastify!原创 2021-12-28 22:58:37 · 738 阅读 · 0 评论 -
nest.js实战之模块路由前缀
1.简介nest.js文档提供了两种路由前缀,一种是全局前缀: const app = await NestFactory.create(AppModule); app.setGlobalPrefix('v1')还有一种是Controller级别的前缀,在一个Controller里起作用:@Controller('/auth')export class AuthController {现在有一个需求,将路由分为多个模块,每个模块使用不同的路由前缀,如A...原创 2021-04-03 17:57:15 · 1787 阅读 · 0 评论 -
nest.js实战之集成Apple登录
1.简介https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_rest_api/verifying_a_userApple登录也是符合OAuth2规范的,但是我们不需要执行所有的步骤,只需要解析idToken获取用户信息即可Apple登录时用户可以选择是否隐藏邮箱,如果隐藏邮箱,则获取的邮箱是一个私有中继邮箱,此时需要用户输入真实邮箱来关联用户一般来说,需要实现以下功能:...原创 2021-03-13 23:39:56 · 423 阅读 · 0 评论 -
nest.js实战之集成Linkedin登录
1.简介https://docs.microsoft.com/zh-cn/linkedin/shared/authentication/authorization-code-flowLinkedin登录过程符合OAuth2规范,分为这些步骤:前端调用认证URL,重定向回调接口,包含参数code 后端使用code交换access_token 使用access_token来获取用户信息 执行登录一般来说需要实现以下功能:使用email来区分用户 用户不存在时创建用户...原创 2021-03-13 23:27:53 · 253 阅读 · 0 评论 -
nest.js实战之集成Google登录
1.简介Google使用OAuth2认证,完整的步骤是:前端访问认证URL,用户统一后执行回调,包含code、id_token等 后端使用code交换access_token,然后可以使用access_token来调用其他API 解析id_token,获取用户信息但是我们的登录,只是需要获取用户信息,即用户邮箱,所以不需要获取access_token,只用id_token即可一般来说,需要实现以下功能:用email来区分用户 如果用户不存在,则创建用户 如果Goo...原创 2021-03-13 23:16:39 · 786 阅读 · 0 评论 -
nest.js实战之集成sentry
1.简介Sentry API用于将事件提交给Sentry收集器以及导出和管理数据。报告和Web API分别进行了版本控制。2.安装仓库:https://github.com/ntegral/nestjs-sentrynpm install --save @ntegral/nestjs-sentry @sentry/node@ntegral/nestjs-sentry:nestjs的sentry模块,提供了一些可注入服务 @sentry/node:sentry...原创 2021-03-13 22:51:05 · 690 阅读 · 0 评论 -
nest.js实战之JWT认证、装饰器角色校验、装饰器获取当前用户
1.简介nest.js可以集成passport的认证,jwt可以作为一种passport认证策略实现我们需要实现以下功能:登录返回一个JWT token,token的有效载荷是用户信息,后续可以使用Bearer Token来进行访问使用Bearer Token访问时,可以在Guard里解析token,将用户信息设置到req.user,如果jwt无效,抛出认证异常AuthGuard注册为全局Guard,默认所有路由需要认证自定义装饰器,设置元数据,用于标记路由不需要认证,并...原创 2021-03-13 21:26:01 · 2845 阅读 · 2 评论 -
nest.js实战之Filter异常处理
1.简介nest.js内置了基础异常类HttpException,以及很多异常扩展类:BadRequestException UnauthorizedException NotFoundException ForbiddenException NotAcceptableException RequestTimeoutException ConflictException GoneException HttpVersionNotSupportedException Pay...原创 2021-03-13 19:08:26 · 683 阅读 · 0 评论 -
nest.js实战之Interceptor转换响应
1.简介一般前后端的响应会约定一个模式来方便前端的响应处理,如nest.js出现异常时的模式:{ "statusCode":400, "data": null, "message": "Bad Request"}这样前端可以直接判断statusCode来处理响应但是,controller方法里会直接返回需要的数据,即data部分如果要在所有controller方法里都包裹上一层statusCode,这样代价又比较大,所以希望有一个统一的切...原创 2021-03-13 18:42:48 · 1010 阅读 · 0 评论 -
nestjs警卫之GuardsConsumer类
GuardsConsumer类用来创建一个指定控制器对象、路由方法对象、Guard数组的调用方法,用来加入路由方法中@nestjs/core/guards/guards-consumer.tsimport iterate from 'iterare';import { GUARDS_METADATA } from '@nestjs/common/constants';import {原创 2018-03-05 00:26:53 · 443 阅读 · 0 评论 -
nestjs警卫之GuardsContextCreator类
GuardContextCreator类继承了ContextCreator抽象类@nestjs/core/guards/guards-context-creator.tsimport 'reflect-metadata';import iterate from 'iterare';import { Controller } from '@nestjs/common/interfaces原创 2018-03-05 00:22:21 · 768 阅读 · 0 评论 -
nestjs辅助类之ContextCreator类
在nestjs中Guard、Interceptor、Pipe三者都是在控制器中使用的,其中Guard、Interceptor使用方式类似,ContextCreator用来获取指定控制器对象、指定方法对象的实例数组@nestjs/core/helpers/context-creator.tsimport 'reflect-metadata';import iterate from 'ite原创 2018-03-05 00:05:59 · 754 阅读 · 0 评论 -
nestjs中AOP的实现
nestjs中面向切面编程分为以下几个部分:中间件、Guard、Interceptor、Pipe、Filter一、按照使用方式来分类:1中间件:在模块的configure方法中进行配置,其配置是以代码形式进行的,当所有模块扫描完、组件创建之后,在NestApplication的setupModules方法中进行设置2Guard、Interceptor、Pipe、Filter:使原创 2018-03-04 23:56:30 · 1682 阅读 · 0 评论 -
nestjs异常之ExceptionsHandler类
@nestjs/core下有两个ExceptionsHandler,其中errors目录下的单纯输出错误日志,exceptions下的则用来创建路由方法的异常捕捉方法@nestjs/core/exceptions/exceptions-handler.tsimport { HttpException as DeprecatedHttpException } from './http-exc原创 2018-03-04 23:01:44 · 2891 阅读 · 0 评论 -
@nestjs/graphql的装饰器
lib/decorators/resolvers.decorators.tsimport { ReflectMetadata } from '@nestjs/common';import { //graphql:resolver_type属性,代表了解析类型,即Query、Mutation、Subscription RESOLVER_TYPE_METADATA, //graphq原创 2018-01-16 00:05:38 · 842 阅读 · 0 评论 -
nestjs依赖注入之Injector类
src/core/injector/injector.ts//注射器,依赖注入export class Injector { //加载中间件实例 public async loadInstanceOfMiddleware( wrapper: MiddlewareWrapper, collection: Map, module: Module) { //原创 2018-01-28 00:39:13 · 1538 阅读 · 0 评论 -
nestjs中间件之MiddlewareBuilder类
src/core/middlewares/builder.ts//中间件构建器,实例传递给模块实例的configure方法,用来构建中间件配置export class MiddlewareBuilder implements MiddlewaresConsumer { //中间件配置集合,一个apply..forRoutes调用生成一个中间件配置 private readon原创 2018-01-31 22:50:29 · 558 阅读 · 0 评论 -
nestjs中间件之MiddlewaresModule类
src/core/middlewares/middlewares-module.ts//中间件模块,被应用程序包含export class MiddlewaresModule { //路由映射实例 private readonly routesMapper = new RoutesMapper(); //路由代理实例,用来创建中间件方法的异常代理 privat原创 2018-01-31 22:24:31 · 817 阅读 · 0 评论 -
nestjs依赖注入之InstanceLoader类
src/core/injector/instance-loader.ts//实例加载器export class InstanceLoader { //依赖注射器 private readonly injector = new Injector(); private readonly logger = new Logger(InstanceLoader.name, tr原创 2018-01-22 23:44:34 · 545 阅读 · 0 评论 -
nestjs核心之Module类
src/core/injector/module.ts//模块类,用于存储模块与其他模块、组件、警卫、拦截器、控制器的关系export class Module { //关联模块集合 private _relatedModules = new Set(); //模块下组件,存储的是实例包装器,键为组件名 //注意!模块本身也作为组件存储在其中 priv原创 2018-01-21 23:05:38 · 2241 阅读 · 0 评论 -
nestjs核心之NestContainer类
src/core/injector/container.ts//全局容器类export class NestContainer { //全局模块集合,全局模块中组件可以被任何模块使用 private readonly globalModules = new Set(); //模块容器,是一个Map,键为token,value为Module,第一个模块应该是根模块原创 2018-01-21 22:24:10 · 537 阅读 · 0 评论 -
nestjs核心之DependenciesScanner类
在NestFactoryStatic中,初始化方法主要的第一步就是对模块进行依赖扫描,就是使用的依赖扫描器类,扫描到的各种模块、组件、控制器、拦截器、警卫都会存储在容器中src/core/scanner.ts//依赖扫描器export class DependenciesScanner { constructor( //容器实例 private r原创 2018-01-18 23:19:26 · 417 阅读 · 0 评论 -
nestjs核心之ApplicationConfig类
src/core/application-config.ts//应用程序配置类export class ApplicationConfig implements ConfigurationProvider { //全局管道 private globalPipes: PipeTransform[] = []; //全局过滤器 private globalFilt原创 2018-01-18 22:43:41 · 695 阅读 · 0 评论 -
nestjs核心之NestApplication类
src/core/NestApplication.ts//nest应用程序类,继承了应用程序上下文,实现了这个接口export class NestApplication extends NestApplicationContext implements INestApplication { //日志记录器 private readonly logger = new Logg原创 2018-01-18 22:40:44 · 1034 阅读 · 0 评论 -
nestjs核心之NestApplicationContext类
src/core/NestApplicationContext.ts//应用程序上下文类,对应了一个模块所处的上下文环境,即它所属的模块数组export class NestApplicationContext implements INestApplicationContext { //模块token工厂,token用来识别模块 private readonly modul原创 2018-01-18 21:46:12 · 838 阅读 · 0 评论 -
nestjs核心之NestFactoryStatic类
src/core/nest-factory.ts//nest工厂类export class NestFactoryStatic { //容器实例 private container = new NestContainer(); //实例加载器 private instanceLoader = new InstanceLoader(this.container)原创 2018-01-18 21:34:46 · 1093 阅读 · 0 评论 -
@nestjs/websocket基本使用
网关组件@WebSocketGateway({ namespace:'ddd', port :3001})export class EventsGateway { @WebSocketServer() server; @SubscribeMessage('message') onEvent(client, data): Observable> { //console.l原创 2018-01-18 14:42:28 · 6734 阅读 · 4 评论 -
nestjs启动流程概览
一般的启动脚本是这样的import { NestFactory } from '@nestjs/core';import { ApplicationModule } from './app.module';import { ValidationPipe } from './common/pipes/validation.pipe';async function bootstrap() ...原创 2018-01-28 12:01:26 · 2146 阅读 · 0 评论 -
@nestjs/typeorm的使用
@nestjs/typeorm已经升级到了2.0版本,使用方法有些改变,重新写一次lib/typeorm.module.tsimport { Module, DynamicModule, Global } from '@nestjs/common';import { ConnectionOptions } from 'typeorm';import { createTypeOrmPr原创 2017-12-31 00:13:29 · 4141 阅读 · 0 评论 -
@nestjs/graphql基本使用
app.module.tsimport { Module, MiddlewaresConsumer, NestModule, RequestMethod,} from '@nestjs/common';import { graphqlExpress, graphiqlExpress } from 'apollo-server-express';import { mak原创 2018-01-15 23:37:44 · 1985 阅读 · 0 评论