Estoy tratando de completar un documento anidado dentro de una matriz de objetos, y nada parece funcionar.
Quiero completar el campo de entrenamiento dentro de este documento de programa.
Este es el documento del Programa:
const ProgramSchema = new Schema({ user: { type: Schema.Types.ObjectId, ref: "User", required: true }, program: [ { day: { type: String, required: true, enum: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", ], }, restDay: { type: Boolean }, workout: { type: Schema.Types.ObjectId, ref: "Workout" }, }, ], }); const Program = mongoose.model("Program", ProgramSchema);Este es el documento de entrenamiento:
const WorkoutSchema = new Schema({ user: { type: Schema.Types.ObjectId, ref: 'User', required: true }, trainingDayName: { type: String, enum: ['A', 'B', 'C', 'D', 'FB', 'aerobic'], required: true, }, name: { type: String, required: true }, description: { type: String }, exercises: [ { muscles: [{ type: String }], name: { type: String, required: true }, description: { type: String }, sets: { type: Number, required: true, min: 1, max: 7 }, reps: { type: Number, required: true, min: 1, max: 50 }, }, ], time: { type: Number, min: 10, max: 300 }, }); const Workout = mongoose.model('Workout', WorkoutSchema);Resulta que la solución es la siguiente sintaxis:
const program = (await Program.findOne({ user: userId }) .populate( 'program.workout' )) as ProgramType;