我相信这个问题与此类似,但用语有所不同。从Mongoose 4
文档中:
我们也可以定义自己的自定义文档实例方法。
// 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
可用的方法。模式中的statics
和methods
对象是什么?有什么区别,为什么我要一个使用另一个?
statics
是模型上定义的方法。methods
在文档(实例)上定义。
您可能会使用类似以下的 静态 方法Animal.findByName
:
const fido = await Animal.findByName('fido');
// fido => { name: 'fido', type: 'dog' }
您可能会使用类似以下的实例 方法fido.findSimilarTypes
:
const dogs = await fido.findSimilarTypes();
// dogs => [ {name:'fido',type:'dog} , {name:'sheeba',type:'dog'} ]
但是您不会这样做,Animals.findSimilarTypes()
因为动物是模型,它没有“类型”。findSimilarTypes
需要this.type
动物模型中不存在的,只有文档实例包含该属性,如模型中所定义。
同样,您不会做¹,fido.findByName
因为您findByName
需要搜索所有文档,fido
而仅仅 是一个 文档。
¹从技术上讲您 可以这样做
,因为实例可以访问集合(this.constructor
或this.model('Animal')
),但是(至少在这种情况下)使用不使用实例中任何属性的实例方法是没有意义的(至少在这种情况下)。(感谢@AaronDufour指出这一点)
我只是在看课本上给我的课文,我不是很确定我理解它在说什么。它基本上告诉我静态方法或类方法包含“modifier”关键字static。但我真的不知道那是什么意思? 有谁能用简单的术语给我解释一下什么是静态方法或者类方法吗? 另外,我能得到一个关于实例方法是什么的简单解释吗? 这是他们在课本上给我的: 静态修饰语的存在与否具有重要的实际意义。一个公共类方法可能会在Java处理它所属的类的定义后立即被调
本文向大家介绍Python 实例方法、类方法、静态方法的区别与作用,包括了Python 实例方法、类方法、静态方法的区别与作用的使用技巧和注意事项,需要的朋友参考一下 Python中至少有三种比较常见的方法类型,即实例方法,类方法、静态方法。它们是如何定义的呢?如何调用的呢?它们又有何区别和作用呢?且看下文。 首先,这三种方法都定义在类中。下面我先简单说一下怎么定义和调用的。(PS:实例对象的权限
问题内容: 编辑: 我发现该方法内只返回哈希和盐。我不确定为什么会发生这种情况,但是它表明没有按原样引用模型。 我具有以下架构和以下实例方法: 在这里调用实例方法,然后保存用户: 但是,当我在mongo CLI中查看集合时,没有提及或。 问题答案: 它不起作用的原因是因为我使用的是箭头方法。我必须使其成为正常功能: 原因是箭头功能与常规功能的区别。请查看以下内容以获取更多详细信息: http://
主要内容:Python类实例方法,Python类方法,Python类静态方法和类属性一样,类方法也可以进行更细致的划分,具体可分为 类方法、 实例方法和 静态方法。 和类属性的分类不同,对于初学者来说,区分这 3 种类方法是非常简单的,即采用 @classmethod 修饰的方法为类方法;采用 @staticmethod 修饰的方法为静态方法;不用任何修改的方法为实例方法。 其中 @classmethod 和 @staticmethod 都是函数装饰器,后续章节会对其做详
操作步骤: 菜单栏: Refactor --> Convert to Instance Method
本文向大家介绍Python实例方法、类方法、静态方法的区别与作用详解,包括了Python实例方法、类方法、静态方法的区别与作用详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实例方法、类方法、静态方法的区别与作用。分享给大家供大家参考,具体如下: Python中至少有三种比较常见的方法类型,即实例方法,类方法、静态方法。它们是如何定义的呢?如何调用的呢?它们又有何区别和作用