A quoi servent les méthodes et la statique de la mangouste et en quoi sont-elles différentes des fonctions normales?
Quelqu'un peut-il expliquer la différence avec l'exemple.
La logique de la base de données doit être encapsulée dans le modèle de données. Mongoose fournit 2 façons de procéder, méthodes et statique. Méthodes ajoute une méthode d'instance aux documents, tandis que Statique ajoute des méthodes statiques "de classe" aux modèles.
Étant donné l'exemple Animal Modèle ci-dessous:
var AnimalSchema = mongoose.Schema({
name: String,
type: String,
hasTail: Boolean
});
module.exports = mongoose.model('Animal', AnimalSchema);
Nous pourrions ajouter une méthode pour trouver des types d’animaux similaires et une méthode statique pour trouver tous les animaux avec une queue:
AnimalSchema.methods.findByType = function (cb) {
return this.model('Animal').find({ type: this.type }, cb);
};
AnimalSchema.statics.findAnimalsWithATail = function (cb) {
Animal.find({ hasTail: true }, cb);
};
Voici le modèle complet avec un exemple d'utilisation pour les méthodes et la statique:
var AnimalSchema = mongoose.Schema({
name: String,
type: String,
hasTail: Boolean
});
AnimalSchema.methods.findByType = function (cb) {
return this.model('Animal').find({ type: this.type }, cb);
};
AnimalSchema.statics.findAnimalsWithATail = function (cb) {
Animal.find({ hasTail: true }, cb);
};
module.exports = mongoose.model('Animal', AnimalSchema);
// example usage:
var dog = new Animal({
name: 'Snoopy',
type: 'dog',
hasTail: true
});
dog.findByType(function (err, dogs) {
console.log(dogs);
});
Animal.findAnimalsWithATail(function (animals) {
console.log(animals);
});
Si je voulais récupérer des animaux avec hasTail
je pourrais simplement changer cette ligne de code:
return this.model('Animal').find({ type: this.type }, cb);
à:
return this.model('Animal').find({ hasTail: true }, cb);
et je n'aurais pas à créer une fonction statique.
Utilisez la méthode sur des documents individuels si vous souhaitez manipuler un document individuel, par exemple en ajoutant des jetons, etc. ..__ Utilisez l'approche statique si vous souhaitez interroger l'ensemble de la collection.