Bu soru this one benzer ancak terminoloji farklı olduğuna inanıyoruz. Mongoose 4'ten documentation:Gelincik 'statik' yöntemleri
Ayrıca, kendi özel belge örneği yöntemlerimizi de tanımlayabiliriz.
// define a schema var animalSchema = new Schema({ name: String, type: String }); // assign a function to the "methods" object of our animalSchema animalSchema.methods.findSimilarTypes = function (cb) { return this.model('Animal').find({ type: this.type }, cb); }
Şimdibuna bir findSimilarTypes yöntemi mevcuttur.eden hayvan örneklerinin hepsi
Ve sonra: Bir Model statik yöntemleri ekleme
de basittir. Bizim animalSchema devam edersek: Statik yöntemlerle görünüyor
// assign a function to the "statics" object of our animalSchema
animalSchema.statics.findByName = function (name, cb) {
return this.find({ name: new RegExp(name, 'i') }, cb);
}
var Animal = mongoose.model('Animal', animalSchema);
Animal.findByName('fido', function (err, animals) {
console.log(animals);
});
hayvan örneklerinin her yanı kendisine mevcut findByName
yöntemi olurdu. Şemadaki statics
ve methods
nesneleri nelerdir? Fark nedir ve neden birini diğeriyle kullanayım?
Eğer Modeli veya yöntemi çağırmak için belgeyi kullanmak ister Yani sadece kullanım farkı yapmaya belge örneği
fido
kullanabilir? – Startec"Animals.findSimilarTypes" öğesini kullanamazsınız, çünkü "Animals" bir modeldir, "type" içermez. "FindSimilarTypes", "Hayvanlar" modelinde bulunmayan bir "this.type" dosyasına ihtiyaç duyuyor; modelde tanımlandığı gibi yalnızca bir doküman örneği bu özelliği içerecektir. findByName' fido' sadece *** bir *** belgedir '*** bütün *** belgeler üzerinden arama ve gerekir' Çünkü – laggingreflex
Benzer şekilde 'fido.findByName' yapamaz. – laggingreflex