sql >> Database >  >> NoSQL >> MongoDB

Mongoose 'statische' methoden versus 'instantie' methoden

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)



  1. Waarom zijn de prestaties van Redis SET beter dan GET?

  2. Toegankelijkheid van de operationele database

  3. Is Redis TimeSeries de juiste tool om kandelaars vast te leggen in aandelenkoersen?

  4. MongoDB $setDifference