我试图通过比较他们的id来过滤问题。为此我创建了两个集合。一个问题和第二次尝试问题ID收集。在此代码中,我尝试获取存储在第二个集合中的第一个尝试的问题ID。并在第二个功能 我获取所有问题,我创建一个for循环来获取所有问题ID。在我的第一个循环中,我不知道这是对还是不对 创建了另一个for循环,循环我的尝试问题id。这样它将在整个终点迭代。但问题是它正确地循环第一个id并在控制台中打印,但在此之后,它将从循环中退出。意味着它将在问题id
结束之前运行我的要求是它将从for(i&lt; = 1)开始循环,从(i <= 0)开始,第一次开始,然后是(i <= 2),直到结束为(i <= 100) 。而且内圈也是以同样的方式。
try{
async.waterfall([
function(callback){
var query = {'quiz.score':1};
var select = 'quiz';
childinfo.find(query,select,function(err,attemptquestion){
if(err){
return next(err);
}else{
callback(null,attemptquestion);
}
});
},
function(attquest){
var query = {};
var i,j;
childquestion.find(query,function(err,questions){
if(err){
return next(err);
}else{
for(i=0;i<=questions.length;i++){
var quest = JSON.stringify(questions[i]._id);
console.log(quest);
for(j=0;j<=attquest.length;j++){
var attqus = JSON.stringify(attquest[j].quiz[j].questionId);
console.log(attqus);
}
}
}
});
}
]);
}catch(err){
console.log("Error in your code");
return next(err);
}
2)。这是我尝试的集合架构
quiz: {type: Array,
questionId: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Question',
index: true
},
score: { type: Number },
time: { type: String }
}
3)。这是我的第二个问题集
title: { type: String, required: true },
options: { type: Array, required: true },
result: { type: Array, required: true },
feedback: { type: String }
我正在做什么:我向前端发送问题,前端发送回问题分数为0和1格式的问题意味着如果问题是正确的分数1,则其他0将存储在尝试的问题集中。
为什么我这样做:因为我在下次发送问题时这样做 从问题收集到前端。它将从尝试中过滤掉 questionId。尝试收集的手段,其中存储有得分1的问题ID将从问题集合中过滤掉,下次只有该问题将被发送到前面,问题ID不等于得分1尝试的问题ID。