Vollzeitblogger

Mongoose.js: MongoDB ODM für Node.js

April 28, 2014

MongoDB ist die dokumentorientierte Datenbank, die besonders in Verbindung mit Node.js große Beliebtheit erfährt. Mongoose.js lässt uns Objekte und Schemata modellieren und erleichtert uns mit eingebauten Funktionen auch das Validieren von Daten.

Es ist also eine Abstraktionschicht zwischen MongoDB und Node.js, warum diese nützlich sein kann, möchte ich in diesem Artikel kurz demonstrieren.

Mongoose.js Grundlagen

Um Mongoose.js in einem Projekt zu verwenden können wir es einfach mit

<code class="bash">npm install mongoose
</code>

installieren. Danach kann man es wie andere Module über var mongoose = require('mongoose'); einbinden.

Um seine Daten ein wenig zu strukturieren, sollte man damit beginnen ein Schema für jeden Typ von Dokumenten anzulegen. Wenn wir zum Beispiel Nutzer in einem Chatsystem administrieren möchten, könnten wir ein ähnliches Schema für die Benutzer wählen:

<code class="javascript">var userSchema = new Schema({
    name: String,
    created: { type: Date, default: Date.now },
    kickedFromChannel: { type: Number, default: 0 },
    blocked: { type: Boolean, default: false },
});

var User = mongoose.model('User', userSchema);

module.exports = User;
</code>

Hier sehen wir wie man so einen Benutzer definiert und als mongoose.model exportiert.

Danach können wir in unserer Applikation auf die Daten wie folgt zugreifen:

<code class="javascript">var User = require('models/user.js');

User.findOne({ name: 'JonathanMH' }, function(error, item){
   console.log(item);
});
</code>

MongoDB “Join” mit Mongoose.js

Auch wenn unsere Daten in Dokumentorientierten Datenbanken oft keine Relationen aufweisen, können wir sie dennoch so darstellen. Die populate Funktion in Mongoose.js hilft dabei und kann ähnlich wie ein SQL JOIN betrachtet werden.

Dokumentation zu populate.

Zusammenfassung

Der Nachteil an Mongoose.js ist natürlich zunächst, dass man andere Syntax schreibt als man sie vielleicht gewohnt ist. Die Vorteile allerdings sind, dass man Struktur, Standardwerte und Validierung zu seiner Applikation hinzufügen kann. Die meisten Funktionen sind sehr intuitiv ausgelegt und lassen einen nicht lange überlegen.