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

154
Vistas
No puedo modelar. Encuentra los documentos que acabo de guardar en mi mangosta

esto es lo que estoy pasando ahora mismo: estoy insertando algunos valores en una colección llamada frutas y justo después de que termine, quiero consola. Inicie sesión en cada uno de ellos con el mapa, el primero intente las salidas de la consola en lugar de una fruta (una sola colección object) todos los objetos de frutas (modelo o colección), pero cuando vuelvo a ejecutar el mismo código (para que agregue nuevamente los mismos valores a las frutas de la colección), la consola muestra los objetos de frutas que se han insertado antes, seguidos de más frutas. (modelo o colección) objeto. ¿Qué puedo hacer para poder hacer uso de los documentos que acabo de insertar en mi colección? Este es el código:

 const db = require("mongoose"); const url = "mongodb://localhost:27017/personasDB"; db.connect(url); const fruitSchema = new db.Schema({ name:{ type: String, required: true, minlength: 3, maxlength: 20 }, price:{ type: Number, required:true, min: 0, max: 100 } }); const Fruit = db.model("fruits", fruitSchema); const fruits = ["pineapple", "apple", "banana", "orange"]; const prices = [12, 12.5, 4, 6.4]; for(let i = 0; i < fruits.length; i++){ const fruit = new Fruit({ name: fruits[i], price: prices[i] }); fruit.save(); } console.log(Fruit.find({}, function(err, elements){ if(err){ console.log(err); }else{ elements.map(fruit=>{ console.log(fruit); }); } }));

el primer registro

después de volver a ejecutar el código, obtengo lo que quiero justo después de las primeras salidas

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

0

El problema es que el método save() es asíncrono. No puede actualizar su base de datos en una línea y asumir que ya ha cambiado en la siguiente. Es probable que registre los documentos sin cambios.

Podría intentar usar Array#map() para obtener una serie de promesas y esperar a que todos los documentos se guarden en paralelo usando Promise.all() . Una vez que se guardan todos los documentos, puede ir y usar Fruit.find() .

 const fruits = ['pineapple', 'apple', 'banana', 'orange'] const prices = [12, 12.5, 4, 6.4] let promises = fruits.map((fruitName, i) => { const fruit = new Fruit({ name: fruitName, price: prices[i], }) return fruit.save() }) // Make sure, you're using `await` in an `async` function! await Promise.all(promises) // all the fruits are saved in the db console.log( Fruit.find({}, function (err, elements) { // ...
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