sql >> Database >  >> NoSQL >> MongoDB

mangoest schema maken

Men definieert Schema zodat de applicatie begrijpt hoe gegevens van de MongoDB in JavaScript-objecten kunnen worden omgezet. Schema is een onderdeel van de aanvraag. Het heeft niets met databank te maken hebben. Het brengt alleen de database in kaart in JavaScript-objecten. Dus ja - als je mooie mapping wilt hebben, moet je deze code uitvoeren in elke applicatie die het nodig heeft. Het is ook van toepassing op getters/setters/validaties/etc.

Houd er echter rekening mee dat u dit doet:

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

registreert Schema globaal. Dit betekent dat als de applicatie die u gebruikt een externe module gebruikt, u in deze module gewoon

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

(merk op dat u het Schema eigenlijk moet registreren voordat u deze code gebruikt, anders wordt er een uitzondering gegenereerd).

Dit alles werkt echter alleen binnen één node-sessie, dus als je een andere node-app gebruikt die toegang nodig heeft tot het Schema , dan moet u de registratiecode bellen. Het is dus een goed idee om alle schema's in aparte bestanden te definiëren, bijvoorbeeld comments.js kan er zo uitzien

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

maak vervolgens het bestand models.js die er zo uit kan zien

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

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

Bel nu require('models.js').initialize(); initialiseert al uw schema's voor een bepaalde node-sessie.



  1. Hoe moet ik Booksleeve gebruiken met protobuf-net?

  2. Voorbeeld om socket.io-redis . te gebruiken

  3. MongoDB beveiligen tegen externe injectie-aanvallen

  4. Beste Session Storage Middleware voor Express + MongoDB