Node.js管道发布请求并获得响应

时间:2019-10-11 08:50:15

标签: javascript node.js stream pipe

我有nodeJs的其余API服务器。

它具有一些用于将文件上传到另一个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" }

但是当尝试打印到记录仪时,我无法定义。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,不确定这是否是最佳实践:

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);

如果有人需要,请在此处发布。