我有nodeJs Rest API服务器。
它有一些 Controller 用于将文件上传到另一个nodeJs服务器(负责将文件上传到AWS存储桶)。
下面的代码一切正常,问题是我想捕获管道的响应并将其打印到日志中。
req.pipe(request.post({ url: url, qs: qs}))
.pipe(res)
.on('error', ((err) => {
log.error(`getAudioSoundFile:: error: ${err} ${err && err.message}`);
return reject(err);
}))
.on('response', ((res2) => {
log.debug(`========================================`);
log.debug(`On response: ${res2['path']}`);
}))
.on('finish', ((res1) => {
// Update the exam status with question that was done
log.debug(`========================================`);
log.debug(`On Finish: ${res['path']}`);
log.debug(`On Finish: ${res1['path']}`);
return resolve(res);
}))
响应正确返回给客户端:
{ path: "some path" }
但是当尝试打印到记录器时,我得到了未定义的信息。
最佳答案
我找到了解决方案,不确定这是否是最佳实践:
req.pipe(request.post({ url: url, qs: qs}))
.on('data', ((data) => {
log.debug(`getAudioSoundFile:: Path saved in AWS: ${data.toString()}`);
}))
.pipe(res)
.on('error', ((err) => {
log.error(`getAudioSoundFile:: error: ${err} ${err && err.message}`);
return reject(err);
}))
.on('finish', ((res) => {
return resolve(res);
如果有人需要,请将其发布到此处。
关于javascript - Node.js 通过管道发布请求并获取响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58337537/