MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

създаване на схема на мангуста

Единият дефинира Schema така приложението разбира как да картографира данни от MongoDB в JavaScript обекти. Schema е част от приложението. В него няманищо да правим с базата данни. Той само картографира базата данни в JavaScript обекти. Така че да - ако искате да имате хубаво картографиране, трябва да стартирате този код във всяка приложение, което се нуждае от него. Също така се отнася за getters/setters/validations/etc.

Обърнете внимание обаче, че правите това:

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

ще регистрира Schema глобално. Това означава, че ако приложението, което изпълнявате, използва някакъв външен модул, тогава в този модул можете просто да използвате

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

(обърнете внимание, че всъщност трябва да регистрирате Schema преди да използвате този код, в противен случай ще бъде изведено изключение).

Всичко това обаче работи само в една сесия на възел, така че ако използвате друго приложение на възел, което се нуждае от достъп до Schema , тогава трябва да се обадите на регистрационния код. Така че е добра идея да дефинирате всички схеми в отделни файлове, например comments.js може да изглежда така

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

след това създайте файл models.js което може да изглежда така

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

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

Сега се извиква require('models.js').initialize(); ще инициализира всичките ви схеми за дадена сесия на възел.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Azure Table срещу MongoDB на Azure

  2. MongoDB директория с данни /data/db не е намерена

  3. Как мога да направя заявка за mongodb с помощта на mongoid/rails без изтичане на времето?

  4. Услугата mongodb не се стартира

  5. Дублирайте документ в MongoDB, като използвате нов _id