MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

„Статични“ методи на Mongoose срещу „инстанционни“ методи

statics са методите, дефинирани в Модела. methods са дефинирани в документа (екземпляра).

Може да използвате статичен метод като Animal.findByName :

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

И можете да използвате метод на екземпляр като fido.findSimilarTypes :

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

Но не бихте направили Animals.findSimilarTypes() тъй като Animals е модел, той няма "тип". findSimilarTypes се нуждае от this.type което не би съществувало в модела Animals, само екземпляр на документ ще съдържа това свойство, както е дефинирано в модела.

По същия начин не бихте¹ направили fido.findByName защото findByName ще трябва да търси във всички документи и fido е простоа документ.

¹Е, технически вие можете , тъй като екземплярът има достъп до колекцията (this.constructor или this.model('Animal') ), но не би имало смисъл (поне в този случай) да има метод на екземпляр, който не използва никакви свойства от екземпляра. (благодаря на @AaronDufour, че посочи това)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как Trello съхранява данни в MongoDB? (Колекция на дъска?)

  2. Как MongoDB сортира записи, когато не е посочен ред на сортиране?

  3. Как да извлека създадената дата от Mongo ObjectID

  4. Как да постигнем връщане назад в транзакции в mongo?

  5. Получаване на най-високата стойност на колона в MongoDB