Итак, у меня есть две схемы, а именно курс и кт. Код обеих схем приведен ниже. Схема курса
const validator=require('validator');
let Schema=new mongoose.Schema({
coursename:{
type:String,
unique:true,
required:true,
validate(value){
if(!validator.isAlphanumeric(value))
throw new Error("Enter a valid course name");
}
}
})
Schema.virtual('ct',{
ref:'Ct',
localField:'_id',
foreignField:'courseid'
});
Schema.virtual('finalpaper',{
ref:'Finalpaper',
localField:'_id',
foreignField:'courseid'
})
let Course=mongoose.model('Course',Schema);
module.exports=Course;
Ct Schema
const mongoose=require('mongoose');
let Schema=new mongoose.Schema({
file:{
type:Buffer,
required:true
},
filename:{
type:String,
required:true
},
courseid:{
type:mongoose.Schema.Types.ObjectId,
ref:'Course'
}
},{
timestamps:true
})
let Ct=mongoose.model('Ct',Schema);
module.exports=Ct;
Теперь, когда я вызываю router.get (), я впервые инициализирую переменную курса в схеме курса. и я вызываю course.populate, где я получаю сообщение об ошибке.
TypeError: course.populate - это не функция, которой я занимался в течение нескольких часов, но не могу понять проблему. Я не знаю, если код Правильно, или я думаю, что я использую функцию заполнения неправильно.
userRouter. js
router.get('/course/:course/ct',async(req,res)=>{
var match={};
var sort={}
if(req.query.sortBy){
part=req.query.sortBy.slice(':');
sort[part[0]]=part[1]==='desc'?-1:1
}
try{
let course=await Course.find({coursename:req.params.course});
await course.populate({
path:'ct',
match,
options:{
limit:req.query.limit,
skip:req.query.skip,
sort
}
}).execPopulate();
course.ct.forEach(Deletefile);
res.send(course.ct);
}catch(e){
console.log(e);
res.status(500).send(e.toString());
}
})