如何手动结束由 Table#createReadStream() 创建的流?

How to manually end stream created by Table#createReadStream()?

我想在流中处理来自 BigTable table 的数据,但提前结束流。 我将此代码用于 Node.js(稍作修改 https://github.com/googleapis/nodejs-bigtable/blob/master/samples/document-snippets/table.js#L215):

const stream = new BigTable({projectId, keyFilename})
  .instance(instanceId)
  .table(tableName)
  .createReadStream();
stream.on('data', () => {
  stream.end();
});
stream.on('end', () => {
  console.log('end');
  stream.destroy();
});
stream.on('close', () => {
  console.log('close');
});

输出为:

end
close

但是这个过程还没有结束。 所以,我相信有些资源没有关闭。 应该如何停播和关闭相关资源?

这看起来可能是客户端库中的错误。我 re-posted 你的问题是 github 问题: https://github.com/googleapis/nodejs-bigtable/issues/506

更新:此问题已得到修复,https://github.com/googleapis/nodejs-bigtable/pull/507. Client version https://github.com/googleapis/nodejs-bigtable/tree/release-v2.0.4 稍后包含修复。