Mongoose.js:什么是QueryStreams

时间:2012-07-19 15:04:07

标签: javascript node.js mongoose

我查看了mongoosejs odm的文档,发现如下: http://mongoosejs.com/docs/querystream.html

它们用于什么?我能用它做什么。

我不确定它们是用于流媒体文档还是动态更新查询...

此致

1 个答案:

答案 0 :(得分:5)

嗯,这都是关于API的。

QueryStream允许使用ReadStream的API,以便感谢QueryStream,您需要了解有关ReadStream / WriteStream的更多信息。< / p>

有许多优点:

  • 您可以处理大量数据,这些数据将作为“块”进行处理,因此内存一次只包含一个项目(可以是DB文档,数据库行,文件中的单行等)。 )
  • 您可以暂停/恢复信息流
  • 您可以非常轻松地管道阅读&gt;

我们的想法是,它为您提供了一个统一API ,用于读写操作。

回答你的问题“我能用它做什么”:

你可以使用或不使用node.js的流API做任何事情,但是当它有某种标准时,它肯定会让它更清晰,更容易使用。

此外,node.js的流是基于事件的(基于EventEmitter),因此它有助于解耦。


编辑:

这更多是关于流的方面。在Mongoose的情况下,单个块包含一个文档。

澄清API的优势:

node.js的http.ServerResponse是一个可写流,这意味着您应该能够使用一行将Mongoose的结果集传输到浏览器:

// 'res' is the http response from your route's callback.
Posts.find().stream().pipe(res); 

关键是,如果您正在写http.ServerResponse,文件或其他任何内容,这无关紧要。只要它实现了一个可写流,它就可以不加改变地工作。


希望我说得更清楚。