我正在使用mongoose查询一个文档,我想将它传递给一个流。我的数据库有多个帐户文档。如果我只是:
db.Accounts.findOne({}).exec(function(err, data){
...
});
它正确返回单个文档。然而,
var mongooseStream = db.Accounts.findOne({}).stream({
transform: JSON.stringify
}),
writeStream = require('fs').createWriteStream('accounts');
mongooseStream.pipe(writeStream);
上面新创建的writeStream里面列出了每个帐户。
最后,如果我.find({}).limit(1).stream()
,它将只返回流中的一个文档。
关于为什么流媒体findOne({})
没有按预期工作的任何想法?谢谢!
答案 0 :(得分:0)
你没有在findOne()
上添加任何条件,而且你正在流式传输它。因此,它会持续执行findOne()
,然后将其提供给流。 findOne()
的用法如下:
SchemaModel.findOne({
//conditions
},function(){
//this is callback
});
根据我的理解,您尝试做的是,您只尝试流式传输集合中的一个文档。对于我说,findOne
不是你需要的,因为findOne
用于在定义一组条件时直接以数据库中的Javascript对象形式提取一个文档。
阅读: