What is the difference between methods and statics in Mongoose?

前端 未结 2 565
-上瘾入骨i
-上瘾入骨i 2021-01-02 01:30

What is the difference between methods and statics?

Mongoose API defines statics as

Statics are pretty much the same as methods but allow for defini         


        
相关标签:
2条回答
  • 2021-01-02 01:54

    It seems like

    'method' adds an instance method to documents constructed from Models

    whereas

    'static' adds static "class" methods to the Models itself

    From the documentation:

    Schema#method(method, [fn])

    Adds an instance method to documents constructed from Models compiled from this schema.

    var schema = kittySchema = new Schema(..);
    
    schema.method('meow', function () {
      console.log('meeeeeoooooooooooow');
    })
    

    Schema#static(name, fn)

    Adds static "class" methods to Models compiled from this schema.

    var schema = new Schema(..);
    schema.static('findByName', function (name, callback) {
      return this.find({ name: name }, callback);
    });
    
    0 讨论(0)
  • 2021-01-02 02:07

    Think of a static like an "override" of an "existing" method. So pretty much directly from searchable documentation:

    AnimalSchema.statics.search = function search (name, cb) {
       return this.where('name', new RegExp(name, 'i')).exec(cb);
    }
    
    Animal.search('Rover', function (err) {
      if (err) ...
    })
    

    And this basically puts a different signature on a "global" method, but is only applied when called for this particular model.

    Hope that clears things up a bit more.

    0 讨论(0)
提交回复
热议问题