MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

criação de esquema mangusto


Um define Schema para que o aplicativo entenda como mapear dados do MongoDB em objetos JavaScript. Schema faz parte da aplicação. Não tem nada fazer com banco de dados. Ele apenas mapeia o banco de dados em objetos JavaScript. Então, sim - se você quiser ter um bom mapeamento, você precisa executar este código em todas aplicativo que precisa. Também se aplica a getters/setters/validations/etc.

Observe, no entanto, que fazer isso:
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);

registrará Schema globalmente. Isso significa que se o aplicativo que você está executando estiver usando algum módulo externo, neste módulo você pode simplesmente usar
var mongoose = require('mongoose');
var Comments = mongoose.model("Comments");
Comments.find(function(err, comments) {
    // some code here
});

(note que você realmente precisa registrar o Schema antes de usar este código, caso contrário, uma exceção será lançada).

No entanto, tudo isso funciona apenas dentro de uma sessão de nó, portanto, se você estiver executando outro aplicativo de nó que precise de acesso ao Schema , então você precisa chamar o código de registro. Portanto, é uma boa ideia definir todos os Schemas em arquivos separados, por exemplo comments.js pode parecer assim
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);
};

em seguida, crie o arquivo models.js que pode se parecer com isso
var models = ['comments.js', 'someothermodel.js', ...];

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

Agora chamando require('models.js').initialize(); irá inicializar todos os seus esquemas para uma determinada sessão de nó.