Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

214
Vistas
Métodos de instancia de Mongoose

Métodos de instancia

 // define a schema const animalSchema = new Schema({ name: String, type: String }); // assign a function to the "methods" object of our animalSchema animalSchema.methods.findSimilarTypes = function(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); };

Ahora todas nuestras instancias de animales tienen un método findSimilarTypes disponible.

 const Animal = mongoose.model('Animal', animalSchema); const dog = new Animal({ type: 'dog' }); dog.findSimilarTypes((err, dogs) => { console.log(dogs); // woof

});

Estaba leyendo los documentos de mongoose y no puedo entender el trabajo de este código. Puede alguien explicármelo.

Alguien explique el flujo de este código.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Los esquemas tienen un campo llamado methods . En ese campo puedes insertar tus propias funciones así:

 animalSchema.methods.nameOfFunction = function() { // Return something here // The `this` keyword refers to the instance of the model // I return the type here return this.type; };

Más tarde, cuando cree una instancia del esquema, puede usarlos.

 // animalSchema is the Schema we inserted the function into earlier // create model from instance const Animal = mongoose.model('Animal', animalSchema); // Create ab Instance of the model // the function added to the methods field gets added // The dog gets created with type 'dog' const dog = new Animal({ type: 'dog' }); // Now we can call the function // the `this` in the function referes to `dog` var result = dog.nameOfFunction(); // Will put out "dog" console.log(result)

En el ejemplo que proporcionó, la función agregada encuentra todos los animales con el mismo tipo que el animal creado. El argumento cb de la función es una devolución de llamada. Otra función que se llama cuando mangosta terminó de buscar.

about 4 years ago · Juan Pablo Isaza Denunciar

0

// define a schema const animalSchema = new Schema({ name: String, type: String });

Defina el esquema Animal: qué campos y características tiene un objeto animal cuando se guarda en la base de datos.

 // assign a function to the "methods" object of our animalSchema animalSchema.methods.findSimilarTypes = function(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); };

Defina que cada objeto creado con la receta animal también debe tener un método llamado findSimilarTypes(callback) .

 const Animal = mongoose.model('Animal', animalSchema); const dog = new Animal({ type: 'dog' }); dog.findSimilarTypes((err, dogs) => { console.log(dogs); // woof });
  • Cuando llama a mongoose.model() en un esquema, Mongoose compila un modelo para usted. Esto le permite crear nuevos objetos que se pueden guardar en la base de datos, pero todavía no guarda un nuevo objeto en la base de datos.
  • Luego se crea un nuevo objeto animal, llamado dog . Tiene el tipo 'dog' Observe que también existe dog.findSimilarTypes(cb) , tal como se define en el esquema.
  • Se llama al método y devolverá todos los objetos que tengan el mismo tipo que el objeto dog .

Además, para abordar la pregunta adicional de Shauryan en los comentarios:

Puede consultar, por ejemplo, este recurso para comprender qué es una función de devolución de llamada: Función de devolución de llamada. Haré todo lo posible para explicar lo que sucede en tu ejemplo.

findSimilarTypes(cb) es una función que toma un solo parámetro, que también es una función.

Este tipo aquí es una función única y anónima.

 (err, dogs) => { console.log(dogs); // woof }

Cuando pasa una función como argumento, se llama "devolución de llamada". Veamos qué obtiene cuando llama a findSimilarTypes(cb) con la función anónima como argumento.

 animalSchema.methods.findSimilarTypes = function(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); };

se convierte en algo como esto (cuando reemplaza el cb con la función anónima):

 return mongoose.model('Animal').find({ type: this.type }, (err, dogs) => { console.log(dogs); // woof });

Ahora todo se reduce a cómo Mongoose ha definido su Model.find() . Cuando termina, llama a su segundo argumento con el error y el resultado de la búsqueda en la base de datos. El segundo argumento es la función anónima que pasamos anteriormente.

Se necesita un poco de tiempo para girar la cabeza alrededor de las devoluciones de llamadas. ¡Espero que esto ayude!

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda