Javascript 如何从firebase中用于循环内和查询数据

Javascript 如何从firebase中用于循环内和查询数据,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我有一个获取firebase数据库中所有用户密钥的查询。这些密钥被保存到一个数组中。然后我想在数组中循环,并在循环中查询用户名。问题是它在加载第一个名称时停止-即使数组中有1000个键,循环也不会进行查询 var i; for (i = 0; i < emailArray.length; i++) { userIDgotten = emailArray[i]; console.log(userIDgotten); return firebase.databa

我有一个获取firebase数据库中所有用户密钥的查询。这些密钥被保存到一个数组中。然后我想在数组中循环,并在循环中查询用户名。问题是它在加载第一个名称时停止-即使数组中有1000个键,循环也不会进行查询

var i;

for (i = 0; i < emailArray.length; i++) { 
    userIDgotten = emailArray[i];

    console.log(userIDgotten);

    return firebase.database().ref('/users/' + userIDgotten).once('value').then(function(snapshotUser) {
        const name = snapshotUser.val().name;

        console.log("NAME: " + name);

        allTicketEmailsFromUsers = allTicketEmailsFromUsers + ", " + name;

        console.log(allTicketEmailsFromUsers);
    });
}

vari;
对于(i=0;i

我没有收到任何错误,但循环只是在检索到名字后停止。

您在循环中使用了一个
返回,它停止了循环
如果您删除该回报,它应该按照您预期的方式工作。

for(var i=0;i
该方法是异步的,并返回一个承诺

由于要使用
one()
并行执行多个查询,因此需要使用以下命令:

var promises = [];
for (var i = 0; i < emailArray.length; i++) { 
   userIDgotten = emailArray[i];

   console.log(userIDgotten);

   promises.push(firebase.database().ref('/users/' + userIDgotten).once('value'));

}

Promise.all(promises)
.then(function(results) {
    var allTicketEmailsFromUsers = "";
    results.forEach(function(snapshotUser) {
        const name = snapshotUser.val().name;
        console.log("NAME: " + name);
        allTicketEmailsFromUsers = allTicketEmailsFromUsers + ", " + name;
    });
    console.log(allTicketEmailsFromUsers);
}
var承诺=[];
对于(var i=0;i
var promises = [];
for (var i = 0; i < emailArray.length; i++) { 
   userIDgotten = emailArray[i];

   console.log(userIDgotten);

   promises.push(firebase.database().ref('/users/' + userIDgotten).once('value'));

}

Promise.all(promises)
.then(function(results) {
    var allTicketEmailsFromUsers = "";
    results.forEach(function(snapshotUser) {
        const name = snapshotUser.val().name;
        console.log("NAME: " + name);
        allTicketEmailsFromUsers = allTicketEmailsFromUsers + ", " + name;
    });
    console.log(allTicketEmailsFromUsers);
}