MongoDBはストリーミングのサポートを内蔵しており、Node.jsのクライアントが読み込み可能なストリームを提供することができますカーソルのために。すべてのHTTP応答オブジェクトは、一連の書き込みによって応答本体をストリーミングする方法や、WebSocketを使用するときにソケットにパイプする方法も提供します。ほとんどの作業はMongoDBサーバにオフロードされ、Node.jsはこれらの種類の要件のために開発されました。
クライアント側でHTTPを使用する場合は、fetch()
を使用して応答本体をメモリにストリーミングできます。ここでは効率的に大規模なCSVファイルの応答を処理する方法を示してexcellent articleです:
const res = await fetch('/big-data.csv')
const csvStream = response.body
.pipeThrough(new TextDecoder())
.pipeThrough(new CSVDecoder())
for (;;) {
const {row, done} = await csvStream.read()
if (done) break
drain(row)
}
そのサーバーとクライアントのサポートエンコードされたコンテンツの両方を忘れてしまったので、あなたは、さらにIを改善するための応答を圧縮することを確認しないでください。/O。
この質問は、StackOverflowのトピックではありません。これには正しい答えはありません。多くの潜在的な回答があり、非常に幅広いです。 –