for循环内的猫鼬查询

时间:2020-07-14 12:44:26

标签: javascript mongoose

嘿,我早上问了一个单独的查询。我没有得到很多答复。从那里我花了很多时间学习异步/等待,承诺和回调,以了解我要去哪里。 但是我还是有点困惑如何执行我的逻辑。这是我的要求

  1. 我的输入是这种形式的字符串数组[“ player1”,“ player2”,“ player3” ....“ player10”]
  2. 我正在运行两个for循环。第一个for循环从0开始直到数组的末尾,第二个for循环从位置1开始。这个想法是将对配对。所以玩家1和玩家2在一起。然后是玩家1和玩家3,依此类推。

一切正常。

在循环结束之前,我还有另外两个要求

  1. 我需要与这对玩家一起去另一个mongo收藏并检查一些东西。
  2. 根据特定条件,我需要将每对保存在另一个集合中。

我正在使用猫鼬findOne进行查询。我希望整个循环同步运行,一次通过每一对,而不必先完成for循环。但是我不知道如何同步运行该猫鼬查询。

我也在使用NODE js

有人可以引导我吗?

for (let i=0; i<namearray.length-1;){
                player1 = namearray[i];
                console.log('Hi I am here 4')
                console.log("Hi i am Player 1", player1)
                for(let j=0; j<namearray.length;){
                  if(j <= i){
                         j = i;
                         j++;
                         continue;
                       }
                       player2 = namearray[j]
                       console.log('Hi I am here 5')
                       console.log("Hi i am player 2", player2)
                       tournamentMatchRegister.findOne({$and:[{$or:[{Player1_Name : player1}, {Player2_Name : player2}]},
                              {$or:[{Player1_Name : player2}, {Player2_Name : player1}]}]},function(err,data9){
                                console.log('Hi I am here 6')
                                //console.log(data9)
                                console.log("Hi i am ", player1)
                                console.log("Hi i am ", player2)
                                //if(data2.Match_Completed === "No"){
                                  var newpotentialmatch = new scheduleRegister({
                                  //  Week_Number: weeknumber,
                                    Player1_Name: player1,
                                  //  Player1_Team: data2.Player1_TeamName,
                                  //  Player1_Seed: data2.PlayerSeedLevel,
                                    Player2_Name: player2,
                                  //  Player2_Team: data2.Player2_TeamName,
                                  //  Player2_Seed: data2.PlayerSeedLevel
                                  }); newpotentialmatch.save(function(err,data3){
                                    if(err){
                                      console.log(err)
                                    }
                                  })
                              })
                                                //  })

                j++
                }
              i++
            }

1 个答案:

答案 0 :(得分:0)

除非您不进行修改,否则for循环将完成。如果我了解您要做什么,我认为使用回调将是前进的道路。我认为这里的一些答案可能会有所帮助:Making mongoose.js queries run synchronously