sql >> Databáze >  >> NoSQL >> MongoDB

Mongoose 'statické' metody vs. 'instanční' metody

statics jsou metody definované na Modelu. methods jsou definovány v dokumentu (instanci).

Můžete použít statický metoda jako Animal.findByName :

const fido = await Animal.findByName('fido');
// fido => { name: 'fido', type: 'dog' }

A můžete použít instanční metodu jako fido.findSimilarTypes :

const dogs = await fido.findSimilarTypes();
// dogs => [ {name:'fido',type:'dog} , {name:'sheeba',type:'dog'} ]

Ale neudělali byste Animals.findSimilarTypes() protože Animals je model, nemá žádný "typ". findSimilarTypes potřebuje this.type která by v modelu Animals neexistovala, pouze instance dokumentu by obsahovala tuto vlastnost, jak je definována v modelu.

Podobně byste neudělali¹ fido.findByName protože findByName bude muset prohledat všechny dokumenty a fido je jen a dokument.

¹No, technicky můžete , protože instance má přístup ke kolekci (this.constructor nebo this.model('Animal') ), ale nedávalo by smysl (alespoň v tomto případě) mít metodu instance, která nepoužívá žádné vlastnosti z instance. (děkujeme @AaronDufour za upozornění)



  1. Couchbase XDCR Replication – Krok za krokem – Nejlepší postupy

  2. Seznam indexů v MongoDB?

  3. SQL LPAD()

  4. Správa dlouhotrvajících operací v MongoDB