2015-02-11 35 views
6

我试图从Mongo数据库向Koa应用程序(使用Mongoose)的用户发送大型结果集。在Koa使用Mongoose编写流式查询流式响应

我本来是这样的:

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

但是,结果集的大小被发送导致应用超时,因此我想,因为它来自于流响应数据库。

随着猫鼬,你可以通过做一些像把一个查询的结果到流:

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

但是,我不知道如何将这种流写入到响应,同时保留所需要的格式。我想要这样的事情发生:

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

但我知道没有body.write在科阿,我敢肯定我没有正确使用流。有人能指引我朝着正确的方向吗?

回答

4

koa-write可能会有所帮助。

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

this.body = stream; 

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