2
タイトルに示されているように、私はwebappにExpress
を使用しています。Mongoose:ストリーミング集約JSONデータ
現在、私のコードは次のようなものになります。
APIコントローラの代わりに使用してvar stream = Doc.find().stream();
の
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();
});
};
を、私はaggregate()
の利用をしたいです。
find()
のように、aggregate()
は読み込み可能なストリームであると思われます。
しかし、find()
をaggregate()
コールに置き換えただけでは機能しないようです。
「TypeError:Object #<Aggregate> has no method 'stream'
」と表示されます。集約されたJSONデータストリーミングの代替手段?
ありがとうございます。やってみます。 @ JohnnyHK。別の質問:私の 'aggregate()'呼び出しが一つの文書を返すのであれば、 'stream()'の使用は何もないのでしょうか? 'stream()'と 'find()'を使って理解したところから、データはドキュメントごとに返されます。この動作を変更することは可能ですか? – Tacocat
これは、データチャンクごとに1つの結果ドキュメントとしてストリームします。そのAFAIKを変更する方法はありません。 – JohnnyHK
それを確認してくれてありがとう、@ JohnnyHK、:)。万が一、ビューレンダリングでExpressサポートのデータストリーミングを行う方法がありますか? > _ < – Tacocat