在Koa中用Mongoose写入stream式响应

我试图从Mongo数据库发送一个大的结果集到一个Koa应用程序的用户(使用Mongoose)。

我本来有这样的东西:

var res = yield Model.find().limit(500).exec(); this.body = {data: res}; 

然而,正在发送的结果集的大小导致应用程序超时,因此我想stream数据库中的响应。

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

 var stream = Model.find().limit(300).stream(); 

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

 this.body.write("{data: "}); this.body.write(stream); this.body.write("}"); 

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

koa写可能会有所帮助。

但你可能不需要这个。 Koa允许你做:

 this.body = stream; 

在你的情况下,你可以创build一个转换stream,因为mongoosestream不是你想要输出的。