Nestjs 如何从嵌套服务器中创建的中间件发送响应?

Nestjs 如何从嵌套服务器中创建的中间件发送响应?,nestjs,fastify,nestjs-fastify,Nestjs,Fastify,Nestjs Fastify,我已经用Fastify创建了一个NestJs项目,并为其创建了一个中间件,但我不知道如何向客户端发送响应,就像我们在express中所做的那样,如果您有任何帮助,我们将不胜感激,谢谢!,以下是我的中间件代码: 导入{ 可注射, 内斯特, HttpException, HttpStatus, }来自“@nestjs/common”; @可注射() 导出类loggermdleware实现了嵌套中间件{ 使用(req:any、res:any、next:Function){ log('Request…'

我已经用Fastify创建了一个NestJs项目,并为其创建了一个中间件,但我不知道如何向客户端发送响应,就像我们在express中所做的那样,如果您有任何帮助,我们将不胜感激,谢谢!,以下是我的中间件代码:

导入{
可注射,
内斯特,
HttpException,
HttpStatus,
}来自“@nestjs/common”;
@可注射()
导出类loggermdleware实现了嵌套中间件{
使用(req:any、res:any、next:Function){
log('Request…',res);
//抛出新的HttpException('Forbidden',HttpStatus.Forbidden);
next();
}
}

看起来像是
fastfy
抽象使用NodeJS vanila
http
对象(此处注入的
res
是)


看起来像是
fastfy
抽象使用NodeJS vanila
http
对象(这里注入的
res
是)


您是否尝试过
res.send()
res.json()
res.json()
?@Daniel是的,但他们给了我未定义的错误,在本地测试了它,并且
res.send()
的工作原理与express中完全相同。见答案bellow@Daniel请注意,我正在使用fastify插件覆盖默认的express设置,因此我的项目使用fastify:,您也使用fastify了吗?我的错。但是我现在有了正确的答案:)(很抱歉造成混淆)您是否尝试过
res.send()
res.json()
res.json()
?@Daniel yes,但他们给我的是未定义的错误在本地测试,并且
res.send()
的工作方式与express完全相同。见答案bellow@Daniel请注意,我正在使用fastify插件覆盖默认的express设置,因此我的项目使用fastify:,您也使用fastify了吗?我的错。但我现在有了正确的答案:)(很抱歉给你带来困惑)
// app.middleware.ts

import { Injectable, NestMiddleware } from '@nestjs/common';
import { ServerResponse, IncomingMessage } from 'http';

@Injectable()
export class AppMiddleware implements NestMiddleware {
  use(req: IncomingMessage, res: ServerResponse, next: Function) {
    res.writeHead(200, { 'content-type': 'application/json' })
    res.write(JSON.stringify({ test: "test" }))
    res.end()
  }
}
// app.module.ts

import { Module, MiddlewareConsumer, RequestMethod } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppMiddleware } from './app.middleware';

@Module({
  imports: [],
  controllers: [AppController],
  providers: [],
})
export class AppModule {
  configure(consumer: MiddlewareConsumer) {
    consumer
      .apply(AppMiddleware)
      .forRoutes({ path: '*', method: RequestMethod.ALL }); // apply on all routes
  }
}