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

535
Views
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 answers
Answer question

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 Report

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 Report

0

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

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!