MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

tworzenie schematu mangusty

Jeden definiuje Schema dzięki czemu aplikacja rozumie, jak mapować dane z MongoDB na obiekty JavaScript. Schema jest częścią aplikacji. Nie ma nic zrobić z bazą danych. Odwzorowuje tylko bazę danych na obiekty JavaScript. Więc tak - jeśli chcesz mieć ładne mapowanie, musisz uruchomić ten kod w każdym aplikacja, która tego potrzebuje. Dotyczy to również getterów/seterów/walidacji/itd.

Pamiętaj jednak, że robiąc to:

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

zarejestruje Schema globalnie. Oznacza to, że jeśli uruchomiona aplikacja korzysta z zewnętrznego modułu, w tym module możesz po prostu użyć

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

(zauważ, że faktycznie musisz zarejestrować Schema przed użyciem tego kodu, w przeciwnym razie zostanie zgłoszony wyjątek).

Jednak wszystko to działa tylko w jednej sesji węzła, więc jeśli używasz innej aplikacji węzła, która potrzebuje dostępu do Schema , musisz zadzwonić pod kod rejestracyjny. Dlatego dobrym pomysłem jest zdefiniowanie wszystkich schematów w osobnych plikach, na przykład comments.js może wyglądać tak

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

następnie utwórz plik models.js który może wyglądać tak

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

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

Teraz wywoływanie require('models.js').initialize(); zainicjuje wszystkie twoje schematy dla danej sesji węzła.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Agregat Mongodb:przekonwertuj datę na inną strefę czasową

  2. Jak zwrócić dane JSON z php MongoCursor

  3. MongoDB Regex, indeks i wydajność

  4. Grupuj i licz według miesiąca

  5. Repozytorium Spring Data Mongo::Wspólna metoda we wszystkich wydaniach Repo