Wie kann ich eine Antwort mit einer In-Memory-DB streamen?NodeJS - Wie kann ich eine Antwort mit einer In-Memory-DB streamen?
Ich benutze Loki JS als eine im Speicher DB. Es gibt eine bestimmte Ressource, wo ich den gesamten Inhalt einer Tabelle zurückgeben muss (kann nicht paginiert werden), und diese Tabelle kann bis zu 500.000 Elemente oder so wachsen, was ungefähr 300 MB ist.
In anderen Fällen habe ich fs.createReadStream verwendet, um eine Datei zu erhalten und es zurück an den Benutzer zu streamen:
fs.createReadStream('zips.json')
.on('data', function() {
res.write(...)
})
.on('end', function() {
res.end();
})
Diese große für große Dateien gearbeitet hat, aber wie kann ich etwas Gleichwertiges ein mit im Speicher DB?
const items = lokiDb.addCollection('items');
items.insert('a bunch of items ...');
// I would now like to stream items via res.write
res.write(items)
Derzeit res.write(items)
werden Speicherprobleme verursachen, da Knoten versucht, die gesamte Antwort auf einmal zurückzukehren.
Sorry, dummes Beispiel; dachte nicht gerade: natürlich wird gespeichert einfach ein Puffer. Ändern Sie die push() im Prototyp wie folgt und Sie sollten in Ordnung sein, für String-basierte Daten mindestens: this.push (this.resource.join ('') .slice (Beginn, Ende)); – mycena