使用Mongoose在Koa中使用流式查询编写流式响应

Ask*_*ons 7 streaming mongoose mongodb node.js koa

我正在尝试从Mongo数据库向Koa应用程序的用户发送大型结果集(使用Mongoose).

我原来有类似的东西:

var res = yield Model.find().limit(500).exec();
this.body = {data: res};
Run Code Online (Sandbox Code Playgroud)

但是,发送的结果集的大小导致应用程序超时,因此我希望将响应流式传输来自数据库.

使用Mongoose,您可以通过执行以下操作将查询结果转换为流:

var stream = Model.find().limit(300).stream();
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何在保留所需格式的同时将此流写入响应.我想要这样的事情发生:

this.body.write("{data: "});
this.body.write(stream);
this.body.write("}");
Run Code Online (Sandbox Code Playgroud)

但是我知道Koa中没有body.write,我确信我也没有正确使用流.有人能指出我正确的方向吗?

Bry*_*sen 5

koa-write可能有所帮助.

但你可能不需要那个.Koa允许您这样做:

this.body = stream;
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您可以创建转换流,因为猫鼬流不是您想要输出的.