9

我正在尝试将一个大型结果集从 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 ,而且我确定我也没有正确使用流。有人可以指出我正确的方向吗?

4

1 回答 1

6

koa-write可能会有所帮助。

但你可能不需要那个。Koa 允许您执行以下操作:

this.body = stream;

在您的情况下,您可以创建一个转换流,因为猫鼬流并不是您想要输出的内容。

于 2015-06-11T14:09:13.110 回答