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

534
Vistas
Mongoose Populate: falta el error de esquema, pero el esquema está registrado correctamente para el modelo

¡Último día de 2021! Después de pasar poco más de 5 horas buscando en Internet, he recurrido a publicar para obtener ayuda.

Comportamiento deseado:

  • la lista de documentos devueltos por la ruta contendrá documentos completos en lugar de solo los ID de ref.

Resoluciones intentadas:

  • función ejecutiva agregada después de poblar
  • Stackoverflow me llevó a creer que el problema estaba relacionado con las conexiones de mongoose, por lo que renové el backend para que mis archivos modelo devolvieran esquemas en lugar de modelos, y luego usé mongoose.createConnection en lugar de .connect, e hice una base de datos. js para contener una única instancia de cada modelo (connection.mode()) a la que los archivos de ruta podrían acceder y compartir. No llegué a un punto en el que pudiera probar .populate, así que reinicié el siguiente código

Error

 MissingSchemaError: Schema hasn't been registered for model "progressions". Use mongoose.model(name, schema)

Tenga en cuenta que este error se produce al intentar completar la "lección" también

modelo de progreso

 const Progress = mongoose.model('Progress', new Schema({ lesson: { type: Schema.Types.ObjectId, ref: 'lesson' }, progressions: [{ type: Schema.Types.ObjectId, ref: 'progression' }], progress:{ type: Number }, user:{ type: Schema.Types.ObjectId, ref: 'user' } },{ timestamps: true, })); module.exports = Progress;

Archivo Rutas de Progreso

 router.get('/all', async (req, res) => { let user = await User.find({email:req.query.user}) let data = await Progress.find({user:user}).populate('progressions') return res.status(201).json({ data, message: 'data populated', success: true }); });

Modelo de progresión

 const Progression = mongoose.model('Progression', new Schema({ type:{ type:String }, toBeReviewed:{ type: Date, default: Date.now }, },{ timestamps: true, })); module.exports = Progression;
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Intente cambiar el atributo de ref de la propiedad de progressions en el esquema de Progress para que coincida con el nombre del modelo de Progression (en mayúsculas):

 progressions: [{ type: Schema.Types.ObjectId, ref: 'Progression' }]
over 4 years ago · Santiago Trujillo Denunciar

0

Todo el código en sus archivos mongoose debería haberse ejecutado antes de que se use en otros archivos.

Este error podría estar ocurriendo porque sus modelos de mongoose no se ejecutan antes de que se usen en algún otro archivo.

over 4 years ago · Santiago Trujillo Denunciar

0

¿Intentaste usar "Progresiones" mientras lo pasabas en poblar?

over 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