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

339
Visualizações
El método Mongoose find () no devuelve ningún valor la primera vez que ejecuto el nodo

La idea es muy simple. Agrego 4 entradas en la colección 'frutas' dentro de 'frutasDB'. Cuando ejecuto server.js, en realidad agrega las entradas de la lista a la base de datos.

Cuando reviso la base de datos, dice que tengo 4 entradas [manzana, kiwi, naranja, plátano]. sin embargo, el método de búsqueda que es

 Fruit.find(function(err, fruits){ if(err){ console.log(err); } else { console.log(fruits); } });

devuelve una matriz vacía cuando ejecuto server.js por primera vez. Si ejecuto server.js por segunda vez y compruebo las colecciones desde dentro de MongoDB, dado que es la segunda vez que ejecuto el contenido de la nueva colección, se muestra como

[manzana, kiwi, naranja, plátano, manzana, kiwi, naranja, plátano]

Esta vez, el método find() muestra la matriz, pero solo 4 de ellos... ¿Qué estoy haciendo mal aquí?

ingrese la descripción de la imagen aquí

Servidor.js:

 const mongoose = require('mongoose'); main().catch(err => console.log(err)); // This section means connect to mongodb and create fruitsDB database inside that async function main() { await mongoose.connect('mongodb://localhost:27017/fruitsDB'); } const fruitSchema = new mongoose.Schema({ name: String, rating: Number, review: String }); const Fruit = mongoose.model('Fruit', fruitSchema); // MongoDB will automatically pluralize the collection name // const fruit = new Fruit({ // name: 'Apple', // rating: 7, // review: 'Pretty solid as fruit!' // }); // Comment out this section to prevent mongoose to // save fruit to fruits collection everytime you run server.js // fruit.save(); const peopleSchema = new mongoose.Schema({ name: String, age: Number }); const People = mongoose.model('People', peopleSchema); const people = new People({ name: 'John', age: 37 }); people.save(); const apple = new Fruit({ name: 'Apple', rating: 7, review: 'Pretty solid as fruit!' }); const kiwi = new Fruit({ name: 'Kiwi', rating: 10, review: 'The best fruit!' }); const orange = new Fruit({ name: 'Orange', rating: 4, review: 'Too sour for me!' }); const banana = new Fruit({ name: 'Banana', rating: 3, review: 'Weird texture!' }); Fruit.insertMany([apple, kiwi, orange, banana], function(error){ if(error){ console.log(error); } else { console.log('New entries are added to the database!'); } }); // Read the fruits collection Fruit.find(function(err, fruits){ if(err){ console.log(err); } else { console.log(fruits); } });
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

El método find() se ejecuta antes de que la base de datos tenga la oportunidad de almacenar los datos.
Puede almacenar la llamada insertMany() en una función asíncrona con await y poner su Fruit.find() después

 async function myFunc() { await Fruit.insertMany([apple, kiwi, orange, banana], function (error) { if (error) { console.log(error); } else { console.log('New entries are added to the database!'); } }); Fruit.find(function (err, fruits) { if (err) { console.log(err); } else { console.log(fruits); } }); } myFunc();

O aproveche las devoluciones de llamada de Promise y use .then() .

 myFunc().then(() => { Fruit.find(function (err, fruits) { if (err) { console.log(err); } else { console.log(fruits); } }); },err=> console.log(err));
about 4 years ago · Juan Pablo Isaza Relatório

0

Debe esperar a que Mongoose se conecte a su servidor MongoDB, y luego debe realizar toda la lógica. Lo que puede hacer es poner toda la lógica en la función main() después await mongoose.connect('mongodb://localhost:27017/fruitsDB'); . Eso asegurará que Mongoose se conecte al servidor MongoDB antes de que se ejecute cualquier consulta DB.

 const mongoose = require('mongoose'); main().catch(err => console.log(err)); // This section means connect to mongodb and create fruitsDB database inside that async function main() { await mongoose.connect('mongodb://localhost:27017/fruitsDB'); const fruitSchema = new mongoose.Schema({ name: String, rating: Number, review: String }); const Fruit = mongoose.model('Fruit', fruitSchema); // MongoDB will automatically pluralize the collection name // const fruit = new Fruit({ // name: 'Apple', // rating: 7, // review: 'Pretty solid as fruit!' // }); // Comment out this section to prevent mongoose to // save fruit to fruits collection everytime you run server.js // fruit.save(); const peopleSchema = new mongoose.Schema({ name: String, age: Number }); const People = mongoose.model('People', peopleSchema); const people = new People({ name: 'John', age: 37 }); people.save(); const apple = new Fruit({ name: 'Apple', rating: 7, review: 'Pretty solid as fruit!' }); const kiwi = new Fruit({ name: 'Kiwi', rating: 10, review: 'The best fruit!' }); const orange = new Fruit({ name: 'Orange', rating: 4, review: 'Too sour for me!' }); const banana = new Fruit({ name: 'Banana', rating: 3, review: 'Weird texture!' }); Fruit.insertMany([apple, kiwi, orange, banana], function(error) { if (error) { console.log(error); } else { console.log('New entries are added to the database!'); } }); // Read the fruits collection Fruit.find(function(err, fruits) { if (err) { console.log(err); } else { console.log(fruits); } }); }
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