Jakie są metody i statyka mangusty i jak różnią się one od normalnych funkcji?Jaki jest pożytek z metod i statyki mangusty?
Czy ktoś może wyjaśnić różnicę na przykładzie.
Jakie są metody i statyka mangusty i jak różnią się one od normalnych funkcji?Jaki jest pożytek z metod i statyki mangusty?
Czy ktoś może wyjaśnić różnicę na przykładzie.
Logika bazy danych powinna być hermetyzowana wewnątrz modelu danych. Mongoose zapewnia 2 sposoby robienia tego, metody i statykę. Metody dodaje metodę instancji do dokumentów, natomiast Statyka dodaje statyczne metody "klasy" do samych modeli.
Biorąc przykład Animal modelu poniżej:
var AnimalSchema = mongoose.Schema({
name: String,
type: String,
hasTail: Boolean
});
module.exports = mongoose.model('Animal', AnimalSchema);
Moglibyśmy dodać metodę, aby znaleźć podobne rodzaje zwierząt oraz metodę statyczną, aby znaleźć wszystkie zwierzęta z ogonami:
AnimalSchema.methods.findByType = function (cb) {
return this.model('Animal').find({ type: this.type }, cb);
};
AnimalSchema.statics.findAnimalsWithATail = function (cb) {
Animal.find({ hasTail: true }, cb);
};
Oto pełny model Przykład użycia dla metod i statyki:
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);
});