5

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

它们是用来做什么的?我能用它们做什么。

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

问候

4

1 回答 1

6

好吧,这都是关于 API 的。

QueryStream允许使用ReadStream's API 所以为了欣赏QueryStream,你需要更多地了解ReadStream/ WriteStream

有很多优点:

  • 您可以处理大量数据,这些数据将作为“块”获得,因此内存一次包含一个项目(它可以是数据库文档、数据库行、文件中的单行等)
  • 您可以暂停/恢复流
  • 您可以非常轻松地通过管道读取->写入

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

要回答您的问题“我能用它们做什么”:

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

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


编辑:

那更多是关于流的方面。在 Mongoose 的例子中,一个单独的块包含一个文档。

为了阐明 API 的优势:

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

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

http.ServerResponse关键是,如果您正在写入、 文件或其他任何内容,这并不重要。只要它实现了可写流,它就应该可以在没有更改的情况下工作。


希望我说得更清楚。

于 2012-07-20T02:48:00.367 回答