如何在node.js中使用for循环获取多个用户';s来自mongodb的电子邮件ID

如何在node.js中使用for循环获取多个用户';s来自mongodb的电子邮件ID,node.js,mongodb,Node.js,Mongodb,请帮助我,因为我是node.js和mongodb的新手。 我需要一个帮助mongodb和node.js,因为这样做我并不感到困惑 我尝试从mongodb从用户ID(userID是唯一的)获取阵列中的多个用户emailID,但是我只得到一个值 我的代码 let output = {}; console.log('') let Data = req.body; //array structure of users and payinvoiceID let VZID = Data.use

请帮助我,因为我是node.js和mongodb的新手。 我需要一个帮助mongodb和node.js,因为这样做我并不感到困惑

我尝试从mongodb从用户ID(userID是唯一的)获取阵列中的多个用户emailID,但是我只得到一个值

我的代码

 let output = {};

 console.log('')
 let Data = req.body;
 //array structure of users and payinvoiceID 
 let VZID = Data.username;
 let PARTICIPANTPAYMENTINFOS2 = Data.PARTICIPANTPAYMENTINFOS;
 console.log('PARTICIPANTPAYMENTINFOS2', PARTICIPANTPAYMENTINFOS2);

          console.log('Data', Data);
          console.log('Data', Data.PARTICIPANTPAYMENTINFOS[0].ID);
   var pARTICIPANTPAYMENTINFOs = [];
    for(let i = 0; i < Data.PARTICIPANTPAYMENTINFOS.length; i++){
        MongoClient.connect(config.Database.DFARM.connectString, function (err, client) {
            console.log(err)

            if (err) {
                let connError = new Error(500, "Error connecting to DFARM database", err);
                res.status(connError.status).json(connError);
            }
            else {
                console.log('Data', Data.PARTICIPANTPAYMENTINFOS[0].ID);

                let query = Data.PARTICIPANTPAYMENTINFOS[i].ID

                console.log('query', query);
                client.db(config.Database.DFARM.dbName).collection("User").find(query).toArray(function (err, docs) {
                    if (err) {
                        let connError = new Error(500, "Error while getting produce", err);
                        res.status(connError.status).json(connError);
                    }
                    else {
                            console.log('Docs', docs);
                        if(docs.length>0){
                                  console.log('EMAIL ID',docs[i].EMAIL);
                                 let EmailId = docs[i].EMAIL;
                                   console.log('EmailId', EmailId);
                            //    useremail.push(EmailId);
                            pARTICIPANTPAYMENTINFOs.push(EmailId);   
                            // pARTICIPANTPAYMENTINFOs.push(Data.PARTICIPANTPAYMENTINFOS[i].PAYABLEAMOUNT);         
                        }

                    }
                });

            }
            //client.close();
        });
    }
    console.log('PARTICIPANTPAYMENTINFOS', PARTICIPANTPAYMENTINFOS);
let output={};
console.log(“”)
让Data=req.body;
//用户和payinvoiceID的数组结构
让VZID=Data.username;
让PARTICIPANTPAYMENTINFOS2=Data.PARTICIPANTPAYMENTINFOS;
log('PARTICIPANTPAYMENTINFOS2',PARTICIPANTPAYMENTINFOS2);
console.log('Data',Data);
console.log('Data',Data.PARTICIPANTPAYMENTINFOS[0].ID);
var pARTICIPANTPAYMENTINFOs=[];
for(设i=0;i0){
console.log('EMAIL ID',docs[i].EMAIL);
让EmailId=docs[i].EMAIL;
console.log('EmailId',EmailId);
//useremail.push(EmailId);
pARTICIPANTPAYMENTINFOs.push(EmailId);
//push(Data.pARTICIPANTPAYMENTINFOs[i].payablemount);
}
}
});
}
//client.close();
});
}
log('PARTICIPANTPAYMENTINFOS',PARTICIPANTPAYMENTINFOS);
我只收到一个电子邮件ID,即电子邮件IDpc@gmail.com.

任何帮助对我都是非常有用的


感谢预付款。

也请注意。除了学习如何处理异步操作的一般方面外,您真正应该学习的另一件事是数据库连接只进行一次,而且绝大多数情况下不会在循环中进行。thanks@NeilLunn这一评论解决了我面临的另一个问题