Каково использование методов мангуста и статики и как они отличаются от обычных функций?Что такое методы мангуста и статика?
Может ли кто-нибудь объяснить разницу с примером.
Каково использование методов мангуста и статики и как они отличаются от обычных функций?Что такое методы мангуста и статика?
Может ли кто-нибудь объяснить разницу с примером.
Логика базы данных должна быть инкапсулирована в модель данных. Mongoose предоставляет два способа сделать это, методы и статику. Методы добавляет метод экземпляра в документы, тогда как Статика добавляет статические методы «класса» к самим моделям.
Учитывая пример животных модели ниже:
var AnimalSchema = mongoose.Schema({
name: String,
type: String,
hasTail: Boolean
});
module.exports = mongoose.model('Animal', AnimalSchema);
Мы могли бы добавить метод, чтобы найти аналогичные виды животных, а также статический метод, чтобы найти всех животных, с хвостами:
AnimalSchema.methods.findByType = function (cb) {
return this.model('Animal').find({ type: this.type }, cb);
};
AnimalSchema.statics.findAnimalsWithATail = function (cb) {
Animal.find({ hasTail: true }, cb);
};
Вот полная модель с примером использования для методов и статики:
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);
});