sql >> Databasteknik >  >> NoSQL >> MongoDB

mongoose schema skapande

En definierar Schema så att applikationen förstår hur man mappar data från MongoDB till JavaScript-objekt. Schema är en del av applikationen. Den har inget har med databasen att göra. Den mappar bara databasen till JavaScript-objekt. Så ja - om du vill ha snygg mappning måste du köra den här koden i varje applikation som behöver det. Det gäller även för getters/setters/validations/etc.

Observera dock att du gör detta:

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

kommer att registrera Schema globalt. Detta betyder att om applikationen du kör använder någon exteriör modul, så kan du i denna modul helt enkelt använda

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

(observera att du faktiskt behöver registrera Schema innan du använder den här koden, annars kommer ett undantag att skapas).

Men allt detta fungerar bara inom en nodsession, så om du kör en annan nodapp som behöver åtkomst till Schema , då måste du ringa registreringskoden. Så det är en bra idé att definiera alla scheman i separata filer, till exempel comments.js kan se ut så här

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

skapa sedan filen models.js som kan se ut så här

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

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

Anropar nu require('models.js').initialize(); kommer att initiera alla dina scheman för en given nodsession.



  1. MongoDB-replikuppsättning med enkel lösenordsautentisering

  2. MongoDB och sammansatta primärnycklar

  3. Det gick inte att ansluta till 127.0.0.1:27017, anledning:errno:111 Anslutningen nekades

  4. Redis letar efter env redis url-variabel inte säker på var env-variabeln ska placeras dålig URI(är inte URI?):(URI::InvalidURIError)