Oboe.jsを使用してNode readStreamからJSONを解析しています。これをクライアントに送信して、メモリ効率の良い方法でリクエストしています。 Oboeのnode
またはpath
イベントのデータをNode.jsのHTTPレスポンスオブジェクトにパイプすることができるので、解析されたデータをフルに収集して一度に送信するのではなく、クライアントに配信できますか?私は問題はres.send
が応答(docs)を終了するという事実に関係していると思いますが、あなたの具体的な質問についてはoboe.jsをNode.jsのHTTPレスポンスオブジェクトにパイプする
const express = require('express');
const app = express();
const PORT = 3000;
const oboe = require('oboe');
const fs = require('fs');
app.get('/download', (req, res) => {
const jsonDataStream = fs.createReadStream('./citylots.json');
oboe(jsonDataStream)
.node('features.*', function(feature) {
// res.send is non-streaming. how to stream?
res.send(feature);
});
});
app.listen(PORT,() => console.log(`up on port ${ PORT }!`));
JuanCaicedo私の質問は本当にありますか:オーボエはストリームインタフェースを持っていますか、それとも高地のような別のライブラリを使う必要がありますか?私は一度にメモリ内のjsonファイル全体をバッファリングすることを避けたい。あなたの最後の質問に答えるために、私は実験目的のためにjson全体の代わりにfeaturesオブジェクトを選択したばかりでしたが、その背後に具体的な意図はありませんでした。 – foundling