Depuis la page d'accueil de Mongoose :
Mongoose fournit une solution simple, basée sur un schéma, pour modéliser vos données d'application et inclut la conversion de type intégrée, la validation, la création de requêtes, les crochets de logique métier et plus encore, prêts à l'emploi.
Mongoose ne peut pas déduire d'une collection de documents potentiellement uniques un schéma. MongoDB n'applique pas de schéma sur les documents stockés dans une collection.
Ainsi, Mongoose ajoute une couche au pilote natif NodeJS (ici) que beaucoup trouvent plus productif. Il n'est pas obligatoire d'utiliser MongoDB lors de l'utilisation de Node.JS.
Mongoose a fondamentalement besoin de deux choses pour fonctionner :
- Schema ==ceci définit la structure du document (référence). Vous pouvez ajouter une validation, de nouvelles méthodes, ajouter des propriétés virtuelles, utiliser des types de données, établir des références à d'autres collections (modèles).
- Model ==c'est la classe qui est ensuite utilisée au moment de l'exécution pour exprimer des requêtes sur des collections (référence). Une définition de schéma est utilisée pour créer un modèle.
Donc, comme vous l'avez vu dans l'exemple que vous avez collé, il y a un chaton Schema
défini, puis un Model
Kitten
est créé. Ce qui est bien dans l'utilisation d'un schéma et d'un modèle, c'est que Mongoose applique ensuite les propriétés/champs disponibles.
Vous ne définissez que le Schema
s et Model
s une fois dans une application. Ainsi, généralement au démarrage de l'application, vous devrez exécuter du code pour les définir, puis utiliser le Model
instances selon les besoins tout au long du cycle de vie de l'application.
Il existe de nombreuses autres raisons pour lesquelles vous voudriez potentiellement utiliser Mongoose.
Vous avez tout à fait raison, vous pouvez simplement utiliser quelque chose de plus direct, sans schéma, en utilisant le pilote natif NodeJS. La syntaxe serait similaire à ce que vous avez montré, mais un peu plus complexe :
MongoClient.connect("mongodb://localhost:27017/exampleDb", function(err, db) {
if(err) { return console.dir(err); }
var collection = db.collection('kittens');
collection.find().toArray(function(err, kittens) {
// here ...
});
});
Plutôt que le simple :
Kitten.find(function(err, kittens) {
});
De plus, lorsque vous utilisez Mongoose, vous constaterez peut-être qu'il est plus facile d'écrire et de lire des requêtes plus complexes :
Kitten.find().where('name', 'Harold').exec(/*callback*/);
Je suggérerais de lire plus de documentation pour avoir une meilleure idée du cadre et s'il correspond bien à vos besoins. La documentation est un peu dispersée malheureusement, mais si vous parcourez les sous-rubriques du Guide
titre, vous aurez beaucoup de bonnes informations disponibles.