MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

création de schéma de mangouste

On définit Schema afin que l'application comprenne comment mapper les données de MongoDB dans des objets JavaScript. Schema fait partie de l'application. Il n'a rien à voir avec la base de données. Il ne mappe la base de données qu'en objets JavaScript. Alors oui - si vous voulez avoir un bon mappage, vous devez exécuter ce code dans chaque application qui en a besoin. Cela s'applique également aux getters/setters/validations/etc.

Notez cependant que faire ceci :

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);

enregistrera Schema globalement. Cela signifie que si l'application que vous exécutez utilise un module extérieur, alors dans ce module, vous pouvez simplement utiliser

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

(notez que vous devez en fait enregistrer le Schema avant d'utiliser ce code, sinon une exception sera levée).

Cependant, tout cela ne fonctionne que dans une session de nœud, donc si vous exécutez une autre application de nœud qui a besoin d'accéder au Schema , alors vous devez appeler le code d'enregistrement. C'est donc une bonne idée de définir tous les schémas dans des fichiers séparés, par exemple comments.js peut ressembler à ceci

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);
};

puis créez le fichier models.js qui peut ressembler à ceci

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

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

Appel maintenant require('models.js').initialize(); initialisera tous vos schémas pour une session de nœud donnée.