正如标题所示,我正在使用Express
作为我的网络应用程序。
目前,我的代码看起来像这样:
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();
});
};
我希望使用var stream = Doc.find().stream();
。
aggregate()
与find()
一样,aggregate()
应该是可读的流,对吗?
然而,当我只是用find()
电话取代aggregate()
时,它似乎无效。
它说TypeError:Object #<Aggregate> has no method 'stream'
。什么是流式聚合JSON数据的替代方案?
答案 0 :(得分:5)
如果在执行var stream = Doc.aggregate(pipeline).cursor().exec().stream();
stream.on('data', ...
之前调用cursor()
,则后续的timer.invalidate()
会返回一个本机光标,然后您可以调用stream()
来传输结果。< / p>
button.setBackgroundImage(backgroundImage1, forState: .Normal)
button.setBackgroundImage(backgroundImage2, forState: .Highlighted)
button.setBackgroundImage(backgroundImage2, forState: .Disabled)
不完全直观,但是当我尝试它时它起作用了。