Mongoose Paginate für JavaScript (Node.js): Komplettanleitung mit Beispielen
Willkommen bei PythonLib! Heute tauchen wir in Mongoose Paginate ein – eine der beliebtesten Bibliotheken für die Implementierung von Paginierung in Node.js-Anwendungen, die Mongoose ODM (Object Data Modeling) für MongoDB verwenden.
1. Was ist Mongoose Paginate und warum braucht man es?
Mongoose Paginate ist ein leichtgewichtiges Plugin für Mongoose, das Ihren Schemas die Methode paginate() hinzufügt. Damit können Sie große Datenmengen mühelos in Seiten aufteilen, ohne alle Dokumente auf einmal laden zu müssen.
Warum ist das wichtig? In echten Anwendungen (Blogs, Onlineshops, APIs) enthalten Datenbanken tausende oder sogar Millionen von Einträgen. Alle gleichzeitig zu laden, führt zu:
- Hoher Serverlast (Arbeitsspeicher, CPU).
- Langsamen API-Antworten (Nutzer warten minutenlang).
- Schlechter User Experience (endloses Scrollen ohne Paginierung oder "Weiter"-Buttons).
Mongoose Paginate löst diese Probleme mit einer fertigen, getesteten und flexiblen Paginierungslösung. Es zählt automatisch die Gesamtzahl der Dokumente, gibt die gewünschte Seite zurück und liefert Meta-Informationen (aktuelle Seite, Gesamtseitenzahl, ob es eine nächste/vorherige Seite gibt).
2. Installation
Die Installation erfolgt über npm (Node Package Manager). Stellen Sie sicher, dass Node.js und npm bereits installiert sind.
npm install mongoose-paginate-v2
Wichtig: Es gibt zwei Versionen der Bibliothek:
mongoose-paginate– die ältere, weniger gepflegte Version.mongoose-paginate-v2– die aktuelle, empfohlene Version mit mehr Funktionen und Fehlerbehebungen.
In diesem Artikel verwenden wir mongoose-paginate-v2.
3. Schnellstart – Minimales funktionierendes Beispiel
Lassen Sie uns ein einfaches "Benutzer"-Modell erstellen und Paginierung darauf anwenden.
// 1. Abhängigkeiten einbinden
const mongoose = require('mongoose');
const mongoosePaginate = require('mongoose-paginate-v2');
// 2. Schema definieren
const userSchema = new mongoose.Schema({
name: String,
email: String,
age: Number,
createdAt: { type: Date, default: Date.now }
});
// 3. Paginierungs-Plugin zum Schema hinzufügen
userSchema.plugin(mongoosePaginate);
// 4. Modell erstellen
const User = mongoose.model('User', userSchema);
// 5. Mit MongoDB verbinden (Beispiel mit lokaler DB)
async function main() {
await mongoose.connect('mongodb://localhost:27017/testdb');
// 6. Testdaten einfügen (falls nicht vorhanden)
const count = await User.countDocuments();
if (count === 0) {
const users = [];
for (let i = 1; i <= 50; i++) {
users.push({ name: `Benutzer ${i}`, email: `benutzer${i}@example.com`, age: 20 + (i % 30) });
}
await User.insertMany(users);
console.log('50 Benutzer wurden eingefügt');
}
// 7. Paginierung verwenden
const options = {
page: 1, // Seitennummer (Standard: 1)
limit: 10, // Elemente pro Seite (Standard: 10)
};
const result = await User.paginate({}, options);
console.log('Paginierungsergebnis:');
console.log('Dokumente:', result.docs);
console.log('Gesamtdokumente:', result.totalDocs);
console.log('Gesamtseiten:', result.totalPages);
console.log('Aktuelle Seite:', result.page);
console.log('Nächste Seite vorhanden:', result.hasNextPage);
console.log('Vorherige Seite vorhanden:', result.hasPrevPage);
await mongoose.disconnect();
}
main().catch(console.error);
Dieser Code erstellt 50 Benutzer und fragt dann die erste Seite mit 10 Benutzern ab. In der Konsole sehen Sie nicht nur die Dokumente selbst, sondern auch die Meta-Informationen.
Auch in der Bibliothek
Objektserialisierung in Node.js: JSON, Buffer und Protobuf
WebSocket in Node.js: Die ws-Bibliothek für Echtzeitkommunikation
Supertest für JavaScript (Node.js): Komplettguide mit Beispielen
Arbeit mit YAML in TypeScript: Parsen, Generieren und Validieren von Daten
Redis-Client für Go (Golang): go-redis und redigo – vollständiger Leitfaden
Empfehlungen
GraphQL-Bibliothek für JavaScript (Node.js) — Vollständiger Leitfaden
Testen in PHP: Überblick über Frameworks und Tools (PHPUnit, Pest, Codeception)
Elasticsearch-Client für Go (Golang): Vollständige Anleitung zur Arbeit mit ES
Moment.js / Day.js für JavaScript (Node.js): Vollständiger Leitfaden mit Beispielen