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

295
Vistas
Express + MongoDB

Intento conectar una aplicación a mongoDB con express, por el momento no tengo ningún problema con los usuarios de la colección, funciona perfectamente pero no funciona para mi segunda colección, cuando intento obtener todos los datos de mi segunda colección, express devuélveme una matriz vacía.

 // Import dependencies const mongoose = require('mongoose'); const express = require('express'); const router = express.Router(); // MongoDB URL from the docker-compose file const dbHost = 'mongodb://database/mybase'; // Connect to data mongoose.connect(dbHost); // create mongoose schema const userSchema = new mongoose.Schema({ mail: String, mdp: String, firstname: String, participants: Number }); // create mongoose schema const roomSchema = new mongoose.Schema({ roomId: String, }); // create mongoose model const User = mongoose.model('User', userSchema); const Room = mongoose.model('Room', roomSchema); /* GET api listing. */ router.get('/', function(req, res) { res.send('api works'); }); /* GET all users. */ router.get('/users', function(req, res) { User.find({}, function (err, users) { if (err) { res.status(500).send(error) } res.status(200).json(users); }); }); /* GET all rooms. */ router.get('/room', function(req, res) { Room.find({}, function (err, room) { if (err) { res.status(500).send(error) } res.status(200).json(room); }); }); module.exports = router;

En mi mongo, los datos se almacenan así:

 > db.users.find() { "_id" : ObjectId("5903a7ee0e999a5054cc402b"), "mail" : "mail@google.com", "mdp" : "toto", "firstname" : "firstname", "participants" : 100 } { "_id" : ObjectId("5903ae7952163fd952970ed5"), "mail" : "mail2@google.com", "mdp" : "toto", "firstname" : "firstname", "participants" : 50 } > db.room.find() { "_id" : ObjectId("59043f280d062a4959b69315"), "roomId" : "6733454" }

Busco durante mucho tiempo pero, para ser honesto, no sé por qué no funciona, también intento poner los datos de los usuarios en los datos de la sala y copiar/pegar el esquema del usuario en el esquema de la sala, pero no funciona. además.

Si coloco el objeto del modelo de usuario en el enrutador. obtener espacio, funciona, obtengo los datos de los usuarios, por lo que para mí no es un problema de ruta.

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

De manera predeterminada, Mongoose aplica una función ( utils.toCollectionName() ) al nombre de un modelo para determinar el nombre de colección que Mongoose usará para ese modelo. Para un modelo llamado Room , ese nombre de colección será rooms .

Sin embargo, su colección se llama room (singular), por lo que no coincide allí.

Para solucionar esto, puede especificar explícitamente qué colección debe usarse usando la opción de esquema de collection :

 const roomSchema = new mongoose.Schema({ roomId: String, }, { collection : 'room' });
about 4 years ago · Santiago Trujillo Denunciar

0

El problema es que el nombre de tu colección es room , en singular. El nombre correcto de la colección es rooms , en plural.

Mongoose deduce del nombre del modelo Room que debería haber una colección llamada rooms en la base de datos. Si no lo hay, simplemente falla en silencio y devuelve una matriz vacía.

Si simplemente cambia el nombre de su colección en la base de datos de room a rooms , su código funcionará.

Puede hacerlo con el comando renameCollection .

about 4 years ago · Santiago Trujillo Denunciar

0

Gracias chicos, era solo eso y estuvo frente a mí todo este tiempo...

Funciona perfecto con salas de colección y no sala

about 4 years ago · Santiago Trujillo 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