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

mongoose skema oprettelse

Man definerer Schema så applikationen forstår, hvordan man kortlægger data fra MongoDB til JavaScript-objekter. Schema er en del af ansøgningen. Den har intet med database at gøre. Det kortlægger kun database til JavaScript-objekter. Så ja - hvis du vil have en god kortlægning, skal du køre denne kode i hver applikation, der har brug for det. Det gælder også for getters/settere/validations/etc.

Bemærk dog, at gør dette:

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

vil registrere Schema globalt. Det betyder, at hvis den applikation, du kører, bruger et eksternt modul, så kan du i dette modul blot bruge

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

(bemærk, at du faktisk skal registrere Schema før du bruger denne kode, ellers vil en undtagelse blive kastet).

Men alt dette virker kun inden for én nodesession, så hvis du kører en anden node-app, som har brug for adgang til Schema , så skal du ringe til registreringskoden. Så det er en god idé at definere alle skemaer i separate filer, for eksempel comments.js kan se sådan ud

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

opret derefter filen models.js som kan se sådan ud

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

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

Kalder nu require('models.js').initialize(); vil initialisere alle dine skemaer for en given nodesession.



  1. MongoDB Aggregation:Tæller adskilte felter

  2. MongoDB vs. Redis vs. Cassandra for en hurtigskrivende, midlertidig rækkelagringsløsning

  3. Få en liste over unikke indlejrede/indlejrede objekter i et MongoDB-dokument

  4. Forberedelse af en MongoDB-server til produktion