Pertanyaan Metode Mongoose 'statis' vs. metode 'contoh'


Saya yakin pertanyaan ini mirip dengan yang ini tetapi terminologinya berbeda. Dari Mongoose 4 dokumentasi:

Kami juga dapat menentukan metode contoh dokumen kustom kami sendiri juga.

// 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);
}

Sekarang semua contoh hewan kami memiliki metode findSimilarTypes yang tersedia untuk itu.

Lalu:

Menambahkan metode statis ke Model juga sederhana. Melanjutkan dengan animalSchema kami:

// 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);
});

Tampaknya dengan metode statis masing-masing contoh hewan akan memiliki findByName metode tersedia untuk itu juga. Apa itu statics dan methods objek dalam Skema? Apa perbedaannya dan mengapa saya menggunakan salah satu dari yang lain?


32
2018-04-16 02:49


asal


Jawaban:


statics adalah metode yang didefinisikan pada Model. methods didefinisikan pada dokumen (contoh).

Anda mungkin melakukannya

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

Dan kemudian Anda mungkin menggunakan contoh dokumen fido melakukan

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

44
2018-04-16 03:02