好的,这是我的代码:
router.get('/',middleware.isLoggedIn, function(req, res){
var clave = req.query.id;
Students.findById(req.params.id).exec(function(err,foundStudent){
if(err){
console.log(err);
}else{
var estudiante=foundStudent.matriculaT0;
var modelo=foundStudent.modelo;
Horarios.find({matricula:estudiante,claveMateria:clave}).exec(function(err,foundHorario){
if(err){
console.log(err)
}else{
var grupo=foundHorario[0].CRN;
Grades.find({CRN:grupo}).exec(function(err,foundGrade){
if(err){
console.log(err);
}else{
var pagina="grade/"+modelo+"/"+clave;
res.render(pagina,{horario:foundHorario, student:foundStudent, grade:foundGrade});
}})}})}})});
基本上我使用三种不同的模型,学生,日程表和成绩。因此,为了每个学生首先访问每个科目的成绩,我会找到所选择的学生并获取他的学校ID号(matricula)和它所属的模型(有两个)。
有了这些,我会在学校课程中查看使用" matricula"和" clave" (主题代码"我从请求中得到。一旦我从学生那里得到7个科目,我就会寻找一个特定的主题代码(CRN),这样我就可以在ejs模板中加载它的成绩(每个科目)有一个不同的评分系统......)
所以,一切都很好,页面的渲染和寻找学生和日程安排,唯一的问题是最后一个查询,foundGrade回来时是空的,但是当我在mongo控制台中执行相同的查询时,我得到了正确的结果。
var grupo=foundHorario[0].CRN
返回正确的结果,字符串形式的主题键,在成绩模型中,主题键(CRN)也是一个字符串。我还确保收集名称是复数,以便不是问题,任何想法?
答案 0 :(得分:0)
这不是答案,但我认为你可以从这里继续解释/解决你的麻烦!
router.get('/',middleware.isLoggedIn, async (req, res) => {
try{
let clave = req.query.id;
let foundStudent = await Students.findById(req.params.id);
let estudiante = foundStudent.matriculaT0;
let modelo = foundStudent.modelo;
let foundHorario = await Horarios.find({
matricula :estudiante,
claveMateria:clave
});
let grupo = foundHorario[0].CRN;
let foundGrade = await Grades.find({CRN:grupo});
let pagina="grade/"+modelo+"/"+clave;
return res.render(pagina,{
horario : foundHorario,
student : foundStudent,
grade : foundGrade
});
}catch(err){
return res.status(400).json(err);
}
});