javascript - 在 Nest.js 中使用 HTTP 在模块之间进行通信
问题描述
我在 Nest.js 中有 2 个模块,我们称它们为 Module1 和 Module2。Module1 的端点为 /api/module1,Module2 的端点为 /api/module2。我正在尝试从 Module1 调用 Module2,如下所示
return await this.httpService
.post(url, data1, {
headers: header
})
.pipe(
map(res => {
return res.data;
}),
);
这里的 url 是 /api/module2 而 data1 是我传递的参数。当我打电话时,这就是我所看到的
{"_isScalar":false,"source":{"_isScalar":false},"operator":{}}
当一个承诺在完全完成之前返回时,我通常会看到这个错误。不知道在这里做什么不同。持有这个被调用的 httpService 的方法包含在 async 中,并且调用方法也有一个 await。
解决方案
您所看到的是一个未订阅的原始可观察对象,可能是由于返回了一个承诺而不是返回可观察对象。Nest 的 HttpService 默认使用 RxJS 而不是 async/await,但要解决此问题,您可以轻松地.toPromise()
在 RxJS 对象之后添加一个,而不必担心自己的订阅。
附带说明:有什么理由通过 HTTP 模块调用 API 而不仅仅是直接使用正确的值调用服务?REST 调用的开销似乎很大。
推荐阅读
- coldfusion - 在 Coldfusion 2018 中创建 CGI 自定义服务器变量
- netsuite - 向 netsuite 销售订单 api restlet 添加自定义字段
- orchardcore - Orchard Core CMS 导出/导入内容类型和部分定义以及内容项
- pine-script - Pine Script - 未来某一天的 bgcolor()
- reactjs - 如何通过 id 检索项目数据并使用 Hooks 将其传递给 React16 中的另一个组件
- r - 在 r 中清理数据集 - 向 NA 单元格添加值
- angular - typscript 如何使用 for cicle 修改对象
- javascript - 移动文件 appscript -> 超链接移动到另一个文件夹 - Google App Script
- html - 使用带有视差的网格布局
- c# - C# 正则表达式的替换超出了预期