2
正如标题所示,我正在使用Express
为我的web应用程序。猫鼬:流聚合的JSON数据
目前,我的代码看起来是这样的:
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()
应该是一个可读的流,对不对?
然而,当我简单地用aggregate()
呼叫替换find()
时,它似乎不起作用。
它说类型错误:Object #<Aggregate> has no method 'stream'
。什么是替代流式汇总JSON数据?
谢谢你的回答。我会尝试。 @JohnnyHK。另一个问题:如果我的'aggregate()'调用返回单个文档,那么使用'stream()'没有意义吗?从我使用'stream()'和'find()'的理解中,数据是以每个文档为基础返回的。有没有可能改变这种行为? – Tacocat
对,它将作为每个数据块的结果文档流。没办法改变AFAIK。 – JohnnyHK
感谢您的确认,@JohnnyHK,:)。无论如何,你知道有什么方法使视图渲染中的Express支持数据流式传输吗? > _ < – Tacocat