Для цикла не работает должным образом после dbRefObject - PullRequest
0 голосов
/ 01 октября 2019

matchIDes [i], содержащих 3 разных match_ID, я хочу, чтобы каждый идентификатор обращался к базе данных и собирал данные о нем в моментальном снимке и возвращал данные, но он только возвращает данные последнего идентификатора.

for(i=0;i<=arry-1;i++) {
    matchIDes.push(response.data.MatchOdds[i].matchId);

    var dbRefObject = firebase.database().ref().child('Game').child(matchIDes[i]);

    dbRefObject.on('value', function(snapshot) {
        var x = snapshot.val();
        for(i=0;i<=matchIDes.length-1;i++){
            var a = x.AllQuestion[0].EventQuestion;
            var c = x.AllQuestion[0].Options[0].GameAnswer;
            var d = x.AllQuestion[0].Options[0].odds;
            var e = x.AllQuestion[0].Options[1].GameAnswer;
            var f = x.AllQuestion[0].Options[1].odds;
            var g = x.AllQuestion[0].QuestionId;

            $("#" + matchIDes[i] + "_Quest").text(a);
            $("#" + matchIDes[i] + "_optA").text(b);
            $("#" + matchIDes[i] + "_rankA").text(c);
            $("#" + matchIDes[i] + "_optB").text(d);
            $("#" + matchIDes[i] + "_rankB").text(e);

            $scope.$apply();
        }
    });         
}

1 Ответ

0 голосов
/ 02 октября 2019

Перенесите код для использования только одного обработчика событий:

var matchOddsArr = response.data.MatchOdds;
var dbRefObject = firebase.database().ref().child('Game');

dbRefObject.on('value', function(snapshot) {
    snapshot.forEach(function(childSnap) {
        matchOddsArr.forEach(function(matchObj) {
            var id = matchObj.matchId;
            if (childSnap.key == id) {
                var x = childSnap.val(); 
                var a = x.AllQuestion[0].EventQuestion;
                var c = x.AllQuestion[0].Options[0].GameAnswer;
                var d = x.AllQuestion[0].Options[0].odds;
                var e = x.AllQuestion[0].Options[1].GameAnswer;
                var f = x.AllQuestion[0].Options[1].odds;
                var g = x.AllQuestion[0].QuestionId;

                $("#" + id + "_Quest").text(a);
                $("#" + id + "_optA").text(b);
                $("#" + id + "_rankA").text(c);
                $("#" + id + "_optB").text(d);
                $("#" + id + "_rankB").text(e);
            };
        });
    });
    $scope.$apply();
});

Из документов:

Прослушивание значения событий

Прикрепление значения наблюдателя к списку данных вернет весь список данных в виде единого снимка, который затем можно зациклить для доступа к отдельным дочерним элементам.

ref.once('value', function(snapshot) {
  snapshot.forEach(function(childSnapshot) {
    var childKey = childSnapshot.key;
    var childData = childSnapshot.val();
    // ...
  });
});

Для получения дополнительной информации см.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...