【发布时间】:2015-06-22 06:09:13
【问题描述】:
我相信这个问题类似于this one,但术语不同。来自猫鼬4documentation:
我们也可以定义自己的自定义文档实例方法。
// 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);
}
现在我们所有的动物实例都有一个可用的 findSimilarTypes 方法。
然后:
向模型添加静态方法也很简单。继续我们的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);
});
似乎使用静态方法,每个动物实例也可以使用findByName 方法。 Schema 中的 statics 和 methods 对象是什么?有什么区别?为什么我要使用其中一个?
【问题讨论】: