元素不会被推送到stream()

时间:2019-03-29 12:22:38

标签: arrays node.js mongoose

当我尝试在if条件内执行console.log(recommendedTasks)时,它可以工作,但数组外部仍然为空

有我尝试过的代码:

    let recommendedTasks = [];
    Task.find({}).stream()
        .on('data', function(task){
            for(let skill of member.skills){
                for(let skill2 of task.skills){
                    if(String(skill) == String(skill2)) recommendedTasks.push(task._id);
                }

            }
        });
    console.log(recommendedTasks)

2 个答案:

答案 0 :(得分:0)

这应该是评论,但我没有这些特权。

应该是因为console.log在for循环中被调用。

以下代码应该可以使用。

for (i = 0; i < recommendedTasks.length; i++) { 
  console.log(recommendedTasks[i])
}

我希望再次发表评论。希望这对您有帮助!

答案 1 :(得分:0)

之所以发生这种情况,是因为您在Task函数外部定义了RecommendationTasks,它与使用第一个可用值[]的console.log()同时触发,请尝试执行此操作。

 Task.find({}).stream()
   .on('data', function(task){ 
     let recommendedTasks = [];
     for(let skill of member.skills){ 
      for(let skill2 of task.skills){  
       if(String(skill) == String(skill2)) return recommendedTasks.push(task._id); 
      } 
     } 
   }); 
   console.log(recommendedTasks)

希望有帮助。