Wie der Titel angegeben hat, verwende ich Express
für meine Webapp.Mungo: Streaming Aggregierte JSON-Daten
Derzeit mein Code sieht ungefähr so aus:
API-Controller
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();
});
};
Statt mit var stream = Doc.find().stream();
möchte ich den Einsatz von aggregate()
machen.
Wie find()
, aggregate()
soll ein lesbarer Stream sein, oder?
Doch als ich einfach find()
durch einen aggregate()
Aufruf ersetzt, scheint es nicht zu funktionieren.
Es heißt TypeError: Object #<Aggregate> has no method 'stream'
. Was ist eine Alternative für das Streaming von aggregierten JSON-Daten?
Vielen Dank für Ihre Antwort. Ich werde es versuchen. @JohnnyHK. Eine andere Frage: Wenn mein Aufruf 'aggregate()' ein einzelnes Dokument zurückgeben würde, ist es dann nicht sinnvoll, 'stream()' zu verwenden? Von dem, was ich unter 'stream()' mit 'find()' verstehe, werden die Daten pro Dokument zurückgegeben. Ist es möglich, dieses Verhalten zu ändern? – Tacocat
Richtig, es wird als ein Ergebnisdokument pro Datenblock streamen. Keine Möglichkeit, dieses AFAIK zu ändern. – JohnnyHK
Danke für die Bestätigung, @JohnnyHK, :). Wissen Sie zufällig, wie Express Daten beim View Rendering streamen kann? > _ < – Tacocat