Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

218
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda