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