如何在使用 HAPI 制作的 REST API 中取消时关闭下载流

How to close download stream on cancel in REST API made with HAPI

我已经用 HAPI 实现了一个 Rest API,它提供了从数据库下载 CSV 文件。当我使用 wget http://localhost/csv/download 开始下载并在下载过程中取消它时,服务器会一直推送流直到结束。

代码

async function downloadCsvHandler(request, responseToolkit) {
    let responseStream = new Transform({
        allowHalfOpen: false,
        writableObjectMode: true,
        transform: convertJsonToCsvMethod
    })
    return responseToolkit.response(responseStream)
}

问题

为什么HAPI即使下载被取消也没有关闭流?

问题是我使用 stream.pipeline 将我的流合并为一个,这导致流开始,但 HAPI 尚未开始使用。通过使用 stream1.pipe(stream2),直到 HAPI 从中读取流才会激活流,这也会导致流在 HAPI 停止时停止。