2016-09-26 14 views

答えて

21

データベースロジックは、データモデル内にカプセル化する必要があります。モンゴースは、これを行う2つの方法、方法、統計を提供します。 メソッドは、ドキュメントにインスタンスメソッドを追加しますが、スタティクスは、モデル自体に静的な「クラス」メソッドを追加します。私たちは、尾を持つすべての動物を見つけるために、動物の似た種類を見つけるための方法、および静的なメソッドを追加することができ

var AnimalSchema = mongoose.Schema({ 
 
    name: String, 
 
    type: String, 
 
    hasTail: Boolean 
 
}); 
 

 
module.exports = mongoose.model('Animal', AnimalSchema);

動物モデル以下の例を考えると

AnimalSchema.methods.findByType = function (cb) { 
 
    return this.model('Animal').find({ type: this.type }, cb); 
 
}; 
 

 
AnimalSchema.statics.findAnimalsWithATail = function (cb) { 
 
    Animal.find({ hasTail: true }, cb); 
 
};

ここで方法と静のための使用例とフルモデルだ:

var AnimalSchema = mongoose.Schema({ 
 
    name: String, 
 
    type: String, 
 
    hasTail: Boolean 
 
}); 
 

 
AnimalSchema.methods.findByType = function (cb) { 
 
    return this.model('Animal').find({ type: this.type }, cb); 
 
}; 
 

 
AnimalSchema.statics.findAnimalsWithATail = function (cb) { 
 
    Animal.find({ hasTail: true }, cb); 
 
}; 
 

 
module.exports = mongoose.model('Animal', AnimalSchema); 
 

 
// example usage: 
 

 
var dog = new Animal({ 
 
    name: 'Snoopy', 
 
    type: 'dog', 
 
    hasTail: true 
 
}); 
 

 
dog.findByType(function (err, dogs) { 
 
    console.log(dogs); 
 
}); 
 

 
Animal.findAnimalsWithATail(function (animals) { 
 
    console.log(animals); 
 
});

関連する問題