MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

creazione dello schema della mangusta

Uno definisce Schema quindi l'applicazione comprende come mappare i dati da MongoDB in oggetti JavaScript. Schema fa parte dell'applicazione. Non ha niente a che fare con il database. Mappa solo il database in oggetti JavaScript. Quindi sì, se vuoi avere una bella mappatura devi eseguire questo codice in ogni applicazione che ne ha bisogno. Si applica anche a getter/setter/validations/ecc.

Nota tuttavia che facendo questo:

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

registrerà Schema globalmente. Ciò significa che se l'applicazione in esecuzione utilizza un modulo esterno, in questo modulo puoi semplicemente utilizzare

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

(nota che devi effettivamente registrare lo Schema prima di utilizzare questo codice, altrimenti verrà generata un'eccezione).

Tuttavia, tutto questo funziona solo all'interno di una sessione del nodo, quindi se stai eseguendo un'altra app del nodo che necessita dell'accesso allo Schema , quindi è necessario chiamare il codice di registrazione. Quindi è una buona idea definire tutti gli schemi in file separati, ad esempio comments.js potrebbe assomigliare a questo

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

quindi crea il file models.js che potrebbe assomigliare a questo

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

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

Ora chiamando require('models.js').initialize(); inizializzerà tutti i tuoi schemi per una determinata sessione del nodo.