MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mungo-Schema-Erstellung

Man definiert Schema Daher versteht die Anwendung, wie Daten aus der MongoDB in JavaScript-Objekte abgebildet werden. Schema ist Bestandteil der Bewerbung. Es hat nichts mit Datenbank zu tun. Es ordnet Datenbanken nur JavaScript-Objekten zu. Also ja - wenn Sie ein schönes Mapping haben möchten, müssen Sie diesen Code in jedem ausführen Anwendung, die es braucht. Es gilt auch für Getter/Setter/Validierungen/etc.

Beachten Sie jedoch Folgendes:

var mongoose = require('mongoose');
var Schema = mongoose.Schema; // <-- EDIT: missing in the original post
var Comments = new Schema({
    title     : String
  , body      : String
  , date      : Date
});
mongoose.model("Comments", Comments);

registriert Schema global. Das bedeutet, wenn die von Ihnen ausgeführte Anwendung ein externes Modul verwendet, können Sie in diesem Modul einfach

verwenden
var mongoose = require('mongoose');
var Comments = mongoose.model("Comments");
Comments.find(function(err, comments) {
    // some code here
});

(Beachten Sie, dass Sie das Schema tatsächlich registrieren müssen bevor Sie diesen Code verwenden, sonst wird eine Ausnahme geworfen).

All dies funktioniert jedoch nur innerhalb einer Knotensitzung, wenn Sie also eine andere Knotenanwendung ausführen, die Zugriff auf das Schema benötigt , dann müssen Sie den Registrierungscode aufrufen. Daher ist es eine gute Idee, alle Schemas in separaten Dateien zu definieren, zum Beispiel comments.js könnte so aussehen

var mongoose = require('mongoose');
var Schema = mongoose.Schema; // <-- EDIT: missing in the original post

module.exports = function() {
    var Comments = new Schema({
        title     : String
      , body      : String
      , date      : Date
    });
    mongoose.model("Comments", Comments);
};

Erstellen Sie dann die Datei models.js die so aussehen kann

var models = ['comments.js', 'someothermodel.js', ...];

exports.initialize = function() {
    var l = models.length;
    for (var i = 0; i < l; i++) {
        require(models[i])();
    }
};

Rufen Sie jetzt require('models.js').initialize(); auf wird alle Ihre Schemas für eine bestimmte Knotensitzung initialisieren.