methods - para - ¿Cuál es el uso de los métodos y la estática de la mangosta?
comics en ingles pdf free (2)
¿Cuál es el uso de métodos y estáticas de mangosta y en qué se diferencian de las funciones normales?
¿Alguien puede explicar la diferencia con el ejemplo?
La lógica de la base de datos debe estar encapsulada dentro del modelo de datos. Mangosta proporciona 2 formas de hacer esto, métodos y estadísticas. Métodos agrega un método de instancia a los documentos, mientras que Estática agrega métodos estáticos de "clase" a los Modelos en sí.
Teniendo en cuenta el modelo animal de ejemplo a continuación:
var AnimalSchema = mongoose.Schema({
name: String,
type: String,
hasTail: Boolean
});
module.exports = mongoose.model(''Animal'', AnimalSchema);
Podríamos agregar un método para encontrar tipos similares de animales, y un método estático para encontrar todos los animales con colas:
AnimalSchema.methods.findByType = function (cb) {
return this.model(''Animal'').find({ type: this.type }, cb);
};
AnimalSchema.statics.findAnimalsWithATail = function (cb) {
Animal.find({ hasTail: true }, cb);
};
Aquí está el modelo completo con uso de ejemplo para métodos y estadísticas:
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 quisiera recuperar animales con hasTail
, simplemente podría cambiar esta línea de código:
return this.model(''Animal'').find({ type: this.type }, cb);
a:
return this.model(''Animal'').find({ hasTail: true }, cb);
y no tendría que crear una función estática.
Use el método en documentos individuales si desea manipular el documento individual como agregar tokens, etc. Use el enfoque de estadísticas si desea consultar toda la colección.