Mongo データベースから Koa アプリケーションのユーザー (Mongoose を使用) に大きな結果セットを送信しようとしています。
私はもともと次のようなものを持っていました:
var res = yield Model.find().limit(500).exec();
this.body = {data: res};
ただし、送信される結果セットのサイズが原因でアプリケーションがタイムアウトしたため、データベースからの応答をストリーミングしたいと考えています。
Mongoose を使用すると、次のようにして、クエリの結果をストリームに変換できます。
var stream = Model.find().limit(300).stream();
ただし、必要な形式を維持しながら、このストリームを応答に書き込む方法がわかりません。私はこのようなことが起こることを望みます:
this.body.write("{data: "});
this.body.write(stream);
this.body.write("}");
しかし、Koa には body.write がないことはわかっていますし、ストリームも適切に使用していないと確信しています。誰かが私を正しい方向に向けることができますか?