从 nestjs 中可观察的 grpc 服务中获取数据,

Omi*_*ndi 3 node.js grpc angular nestjs grpc-node

我想使用 gRPC 服务在我的微服务之间进行通信。但是当从 Grpc 服务获得响应时,在返回一个方法之前,我想做一些修改和功能。

示例项目:https : //github.com/nestjs/nest/tree/master/sample/04-grpc

像这样:

@Get(':id') 
getById(@Param('id') id: string): Observable<Hero> {
  const res: Observable<Hero> = this.heroService.findOne({ id: +id }); 
  console.log(res); res.name = res.name + 'modify string'; 
  return res;
}
Run Code Online (Sandbox Code Playgroud)

但在 console.log 中显示以下消息而不是原始响应。

Observable { _isScalar: false, _subscribe: [Function] }
Run Code Online (Sandbox Code Playgroud)

eol*_*eol 6

一种方法是您的转换Observable为 aPromise并等待此承诺。然后您可以修改并返回结果:

@Get(':id') 
async getById(@Param('id') id: string): Promise<Hero> {

  const res:Hero = await this.heroService.findOne({ id: +id }).toPromise();
  
  res.name = res.name + 'modify string'; 

  return res;

}
Run Code Online (Sandbox Code Playgroud)