您能简单地解释一下使用mongoose时的实例方法是什么吗?

您能简单地解释一下使用mongoose时的实例方法是什么吗?,mongoose,methods,instance,Mongoose,Methods,Instance,如果我说这个代码不清楚,我错了吗 我或多或少了解这应该做什么,但是。。。 我猜我们正在寻找集合中具有相同类型的对象 事情是他们写这段代码的方式听起来对我来说不是很清楚。你能提供一个更好的例子或纠正这个吗 非常感谢 现在,我们所有的动物实例都有一个可用的findSimilarTypes方法 var Animal = mongoose.model('Animal', animalSchema); var dog = new Animal({ type: 'dog' }); dog.find

如果我说这个代码不清楚,我错了吗

我或多或少了解这应该做什么,但是。。。 我猜我们正在寻找集合中具有相同类型的对象

事情是他们写这段代码的方式听起来对我来说不是很清楚。你能提供一个更好的例子或纠正这个吗

非常感谢

现在,我们所有的动物实例都有一个可用的
findSimilarTypes
方法

 var Animal = mongoose.model('Animal', animalSchema);
 var dog = new Animal({ type: 'dog' });

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

Mongoose modelschema声明或多或少类似于类声明,因此大致如下:

    class Person {
        constructor (name, yearOfBirth, job) {
            this.name = name;
            this.yearOfBirth = yearOfBirth;
            this.job = job;
        }

        calculateAge() {
            var age = new Date().getFullYear - this.yearOfBirth;
            console.log(age);
        }
    }

    const john6 = new Person6('John', 1990, 'teacher');

john6.calculateAge() // Returns age

看来医生们的解释方式很不直观。让我们复习一下创建模型的基础知识,好吗? 您可以定义一个模式-

var mongoose=require('mongoose');
var Schema=mongoose.Schema;
//任意随机模式
var animal_SCHEMA=新模式({
名称:String,
类型:字符串
});
您可以定义自己的模型实例可以使用的方法

以文档中的示例为例,创建实例方法的方法是-

animalSchema.methods.findSimilarTypes=function(){
return mongoose.model('Animal').find({type:this.type});//为了简单起见,我省略了回调
};
然后,创建一个模型并可以将其导出。在这里,我只是创建一个模型

var-animal\u MODEL=mongoose.MODEL('Animals',animal\u SCHEMA);
现在,您为模型实例创建了一个模型和一个实例,但将使用它的实例在哪里?让我们创建一个。这就是通常创建模型的实例的方式。没什么新鲜事

var newAnimal=newAnimal_模型({name:“Scobby”,type:“Detective”});//这可以使用findSimilarTypes
您可能很乐意创建这样的新实例并保存它们,通常如下所示-

const savedData=wait newAnimal.save();
有没有想过
save()
方法?这是一个实例方法的例子!默认情况下,Mongoose提供了
save()
以及一系列其他方法,请参阅

之所以这样称呼它们,是因为它们只附带一个对象的实例

您创建的模型的每个实例都有一些内置的实例方法。您之前定义的是一个实例方法,它是由您定制的。 现在,
newAnimal
可以使用此方法

事实上,您为该模型生成的所有新实例都可以访问
findsimirtypes
方法

var badamal=新的动物模型({名称:“好斗”,类型:“麻烦制造者”});
var trouble_makers=badamal.findSimilarTypes();
控制台日志(故障制造者);
    class Person {
        constructor (name, yearOfBirth, job) {
            this.name = name;
            this.yearOfBirth = yearOfBirth;
            this.job = job;
        }

        calculateAge() {
            var age = new Date().getFullYear - this.yearOfBirth;
            console.log(age);
        }
    }

    const john6 = new Person6('John', 1990, 'teacher');

john6.calculateAge() // Returns age