在 Meteor 中,在服务器端,我想在 Collection 上使用 .find() 函数,然后从返回的光标中获取 Node ReadStream 接口。我已经尝试在光标上使用 .stream() ,如 mongoDB 文档Seen Here中所述。但是我收到错误“对象[对象对象]没有方法'流'”所以看起来流星集合没有这个选项。有没有办法从 Meteor Collection 的光标中获取流?
我正在尝试将一些数据导出到 CSV,并且我想将数据直接从集合流传输到 CSV 解析器,然后再传输到返回给用户的响应中。我能够从我们正在使用的路由器包中获取响应流,除了从集合中获取流之外,它都可以正常工作。从 find 中获取数组以手动将其推送到流中会破坏流的目的,因为它将所有内容都放入内存中。我想我的另一个选择是在集合上使用 foreach 并将行一个一个地推送到流中,但是当我可以直接通过解析器对流进行管道转换时,这似乎很脏。
这是我正在尝试做的一些示例代码:
response.writeHead(200,{'content-type':'text/csv'});
// Set up a future
var fut = new Future();
var users = Users.find({}).stream();
CSV().from(users)
.to(response)
.on('end', function(count){
log.verbose('finished csv export');
response.end();
fut.ret();
});
return fut.wait();