Tac*_*cat 2 streaming aggregate mongoose
如标题所示,我正在使用Express我的webapp。
目前,我的代码如下所示:
API控制器
var mongoose = require('mongoose');
var Doc = mongoose.model('Document');
var sendJSONresponse = function(res, status, content) {
res.status(status);
res.json(content);
};
// "/api/documents"
module.exports.listAllDocuments = function(req, res) {
var stream = Doc.find().stream();
stream.on('data', function (chunk) {
res.write(JSON.stringify(chunk));
}).on('error', function (err) {
console.log('Error: ' + err);
}).on('end', function () {
res.end();
});
};
Run Code Online (Sandbox Code Playgroud)
var stream = Doc.find().stream();我希望利用而不是使用aggregate()。
像一样find(),aggregate()应该是可读流,对吗?
但是,当我简单地find()用一个aggregate()电话代替时,它似乎不起作用。
它说类型错误:Object #<Aggregate> has no method 'stream'。有什么方法可以流式传输聚合的JSON数据?
如果你调用cursor()在Aggregate执行前,随后exec()返回本机光标,你就可以调用stream()到流的结果。
var stream = Doc.aggregate(pipeline).cursor().exec().stream();
stream.on('data', ...
Run Code Online (Sandbox Code Playgroud)
不完全直观,但是当我尝试时它起作用。
| 归档时间: |
|
| 查看次数: |
1228 次 |
| 最近记录: |