statics
er metoderne defineret på modellen. methods
er defineret på dokumentet (instansen).
Du kan bruge en statisk metode som Animal.findByName
:
const fido = await Animal.findByName('fido');
// fido => { name: 'fido', type: 'dog' }
Og du kan bruge en forekomstmetode som fido.findSimilarTypes
:
const dogs = await fido.findSimilarTypes();
// dogs => [ {name:'fido',type:'dog} , {name:'sheeba',type:'dog'} ]
Men du ville ikke gøre Animals.findSimilarTypes()
fordi Animals er en model, har den ingen "type". findSimilarTypes
har brug for en this.type
som ikke ville eksistere i dyremodellen, ville kun en dokumentinstans indeholde den egenskab, som defineret i modellen.
På samme måde ville du ikke¹ gøre fido.findByName
fordi findByName
skulle søge gennem alle dokumenter og fido
er bare a dokument.
¹Tja, teknisk set kan det , fordi instans har adgang til samlingen (this.constructor
eller this.model('Animal')
), men det ville ikke give mening (i hvert fald i dette tilfælde) at have en instansmetode, der ikke bruger nogen egenskaber fra instansen. (tak til @AaronDufour for at påpege dette)