Reputation: 1995
I am trying to fetch tutors:
await mongoose.connect(MONGODB_URI);
const subjects = await Subject.find();
const grades = await Grade.find();
const tutors = await Tutor.find()
.populate('gradeSubjects.grade')
.populate('gradeSubjects.subject')
If I don't add the lines that fetch subjects and grades I get this error:
MissingSchemaError: Schema hasn't been registered for model "Grade".
MissingSchemaError: Schema hasn't been registered for model "Subject".
I don't understand why this happens.
Here are the definitions of the models:
Tutor
import mongoose, { Schema, model, models } from 'mongoose';
const tutorSchema = new Schema({
name: { type: String, required: true },
gradeSubjects: [
{
grade: { type: mongoose.Schema.Types.ObjectId, ref: 'Grade', required: true },
subject: { type: mongoose.Schema.Types.ObjectId, ref: 'Subject', required: true }
}
]
});
const Tutor = models.Tutor || model('Tutor', tutorSchema);
export default Tutor;
Grade
import mongoose, { Schema, model, models } from 'mongoose';
const gradeSchema = new Schema({
name: { type: String, required: true },
subjects: [{ type: Schema.Types.ObjectId, ref: 'Subject' }], // Reference to subjects
});
const Grade = models.Grade || model('Grade', gradeSchema);
export default Grade;
Subject
import mongoose, { Schema, model, models } from 'mongoose';
const subjectSchema = new Schema({
name: { type: String, required: true },
});
const Subject = models.Subject || model('Subject', subjectSchema);
export default Subject;
Any idea what's going on?
Upvotes: 0
Views: 45