Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

236
Views
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.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

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' });
over 4 years ago · Santiago Trujillo Report

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 .

over 4 years ago · Santiago Trujillo Report

0

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

Funciona perfecto con salas de colección y no sala

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!