我正在尝试从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,而且我确定我也没有正确使用流。有人可以指出我正确的方向吗?
koa-write可能会有所帮助。
但您可能不需要。Koa允许您执行以下操作:
在您的情况下,您可以创建转换流,因为猫鼬流并不是您想要输出的。