#need help in interceptor

1 messages · Page 1 of 1 (latest)

grave egret
#

import { CallHandler, ExecutionContext, Injectable, NestInterceptor } from '@nestjs/common';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

import { ResponseObject } from 'src/structure';

@Injectable()
export class ResponseInterceptor<T> implements NestInterceptor<T, ResponseObject> {
intercept(context: ExecutionContext, next: CallHandler): Observable<ResponseObject> {
const ctx = context.switchToHttp();
return next.handle().pipe(map((data) => ({
statusCode: ctx.getResponse().statusCode, status: false, data: data, message: "wow", path: "/path", timestamp: new Date().toISOString(),
})));
}
}

this intersector is not working as expected

gloomy beacon
#

Well, what is it doing?

grave egret
gloomy beacon
#

You said it's not working as expected. What is it doing that is unexpected?

grave egret
#

this is working

import { Controller, Get, Req, Res } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) { }

  @Get()
  getHello() {
    return "awesome";
  }
}```
#

this is not working

import { Controller, Get, Req, Res } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) { }

  @Get()
  getHello(@Req() req: Request, @Res() res: Response) {
    return "awesome";
  }
}
#

@gloomy beacon help me to fix it

gloomy beacon
#

You have @Res() but don't manage sending the response yourself. If you use @Res() you are in charge of the response

grave egret
#

this methods are not there in res

gloomy beacon
#

Because you have the wrong Response type

#

import { Response } from 'express';

grave egret
#

ohh

grave egret
#

wow it's working thank you so much buddy

gloomy beacon
#

Don't import from common. That's an alias for @Res()