J'ai deux modèles mangouste:Mongoose - MissingSchemaError sur la population
1- modèle de l'événement:
eventSchema = new mongoose.Schema({
name: {
type: String,
required: true,
},
location: {
type: { type: String, default: 'Point', required: true },
coordinates: { type: [Number], required: true },
},
sport: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Sport',
required: true,
},
startDate: {
type: Date,
required: true,
},
description: {
type: String,
required: true,
},
host: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
required: true,
},
players: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
}],
}, { timestamps: true });
2- modèle utilisateur:
userSchema = new mongoose.Schema({
email: {
type: String,
required: true,
unique: true,
},
password: {
type: String,
required: true,
},
firstName: {
type: String,
required: true,
},
lastName: {
type: String,
required: true,
},
age: {
type: Number,
required: true,
},
location: {
type: String,
},
}, { timestamps: true });
Dans mon EventService
je suis en train de recherchez un événement par ID et renvoyez les champs sport
host
et players
remplis. Les deux premiers champs ne jettent aucune erreur lors du remplissage et fonctionne correctement, mais le problème est avec le champ players
. Il jette cette erreur:
{ MissingSchemaError: Schema hasn't been registered for model "players".
Use mongoose.model(name, schema)
at MissingSchemaError (/Users/elias/Documents/tfg/sporter-app/sporter-api/node_modules/mongoose/lib/error/missingSchema.js:20:11)
at NativeConnection.Connection.model (/Users/elias/Documents/tfg/sporter-app/sporter-api/node_modules/mongoose/lib/connection.js:1043:11)
at getModelsMapForPopulate (/Users/elias/Documents/tfg/sporter-app/sporter-api/node_modules/mongoose/lib/model.js:3569:20)
at populate (/Users/elias/Documents/tfg/sporter-app/sporter-api/node_modules/mongoose/lib/model.js:3113:15)
at _populate (/Users/elias/Documents/tfg/sporter-app/sporter-api/node_modules/mongoose/lib/model.js:3081:5)
at Function.Model.populate (/Users/elias/Documents/tfg/sporter-app/sporter-api/node_modules/mongoose/lib/model.js:3041:5)
at Immediate.<anonymous> (/Users/elias/Documents/tfg/sporter-app/sporter-api/node_modules/mongoose/lib/query.js:1441:17)
at Immediate.<anonymous> (/Users/elias/Documents/tfg/sporter-app/sporter-api/node_modules/mquery/lib/utils.js:137:16)
at runCallback (timers.js:781:20)
at tryOnImmediate (timers.js:743:5)
at processImmediate [as _immediateCallback] (timers.js:714:5)
message: 'Schema hasn\'t been registered for model "players".\nUse mongoose.model(name, schema)',
name: 'MissingSchemaError' }
Enfin voici comment j'appelle la méthode .populate()
:
const event = await Event.findById(eventId)
.populate('sport', 'host', 'players')
.exec();
Toute idée sur ce que je fais mal? Merci!