Mongoose 'static' methods vs. 'instance' methods

statics are the methods defined on the Model

methods are defined on the document (instance).

We may also define our own custom document instance methods too.

// define a schema
var animalSchema = new Schema({ name: String, type: String });

// assign a function to the "methods" object of our animalSchema
animalSchema.methods.findSimilarTypes = function (cb) {
  return this.model('Animal').find({ type: this.type }, cb);
}

Now all of our animal document instances have a findSimilarTypes method available to it.

And then:

Adding static methods to a Model is simple as well. Continuing with our animalSchema:

// assign a function to the "statics" object of our animalSchema
animalSchema.statics.findByName = function (name, cb) {
  return this.find({ name: new RegExp(name, 'i') }, cb);
}

var Animal = mongoose.model('Animal', animalSchema);
Animal.findByName('fido', function (err, animals) {
  console.log(animals);
});

You might do,  

Animal .  Modal
Animal.findByName('fido', function(err, fido){
    // fido => { name: 'fido', type: 'dog' }
});

And then you might use the document instance fido to do

fido .  document

扫描二维码关注公众号,回复: 5666279 查看本文章
fido.findSimilarTypes(function(err, dogs){
    // dogs => [ {name:'fido',type:'dog} , {name:'sheeba',type:'dog'} ]
});

猜你喜欢

转载自www.cnblogs.com/Joans/p/10599880.html
今日推荐