statics
zijn de methoden die in het model zijn gedefinieerd. methods
zijn gedefinieerd op het document (instantie).
Je zou een statische . kunnen gebruiken methode zoals Animal.findByName
:
const fido = await Animal.findByName('fido');
// fido => { name: 'fido', type: 'dog' }
En je zou een instantie methode . kunnen gebruiken zoals fido.findSimilarTypes
:
const dogs = await fido.findSimilarTypes();
// dogs => [ {name:'fido',type:'dog} , {name:'sheeba',type:'dog'} ]
Maar u zou Animals.findSimilarTypes()
niet doen omdat Dieren een model is, heeft het geen "type". findSimilarTypes
heeft een this.type
nodig die niet zou bestaan in het Animals-model, zou alleen een documentinstantie die eigenschap bevatten, zoals gedefinieerd in het model.
Op dezelfde manier zou je fido.findByName
. niet doen omdat findByName
zou door alle documenten moeten zoeken en fido
is gewoon een document.
¹Nou, technisch gezien kunt u , omdat instantie wel toegang heeft tot de collectie (this.constructor
of this.model('Animal')
) maar het zou niet logisch zijn (tenminste in dit geval) om een instantiemethode te hebben die geen eigenschappen van de instantie gebruikt. (met dank aan @AaronDufour voor het erop wijzen)