2016-11-04 5 views
0

После кода из мангустов документации:Что это означает в следующем коде Mongoose?

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost/test'); 
var Schema = mongoose.Schema; 
// 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); 
} 
var Animal = mongoose.model('Animal', animalSchema); 
var dog = new Animal({ type: 'dog' }); 

dog.findSimilarTypes(function(err, dogs) { 
    console.log(dogs); // woof 
}); 

Какой объект первым «это» относится к? Это объект документа? В API не удалось найти какой-либо «модельный» метод в «документе»?

ответ

0

В способе экземпляра this является экземпляром модели, на которую вызывается метод.

Класс Model наследует от Document и предоставляет метод model().

+0

поэтому модель называется «Animal». «собака» - это образец модели. 'dog' также считается документом, если вы сохраните его правильно? У меня появилось больше вопросов, которые я просто хотел сломать. –

+1

Это правильно. – JohnnyHK

+0

Мне интересно Если вы можете сделать 'return Animal.find ({type: this.type}, cb);'? потому что я думаю, что весь экземпляр Animal получит этот метод 'findSimilarTypes', и вы можете сделать' .find() 'на модели. –

Смежные вопросы