Для цикла только последняя итерация при использовании FireStore - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь сравнить значения в базе данных Firebase / Firestore и меняю стиль границы раздела, основываясь на том, является ли значение истинным или нет. Цикл For проходит каждый раз, но сохраняет только последний. Я думаю, это переписывает в цикле, но я не понимаю, как?

// HANDLES THE FRONTEND TOGGLE/COLOR CHANGE OF SKILLS ON THE FRONTEND
for (var i = 0; i < skills.length; i++) {
    var toggledSkills = skills[i].id;
    console.log(toggledSkills);
    var query = db.collection('users').where(toggledSkills, "==", true);

    query.get().then(function(querySnapshot) {
        if (querySnapshot.empty) {
            // IF THE SKILL IS NOT LEARNED, PLAIN STYLING
            document.getElementById(toggledSkills).parentNode.style.border = "2px solid purple";
        } else {
            // IF THE SKILL IS TRUE/ALREADY LEARNED, COOL STYLING
            document.getElementById(toggledSkills).parentNode.style.border = "2px solid green";
        }
    });

}

1 Ответ

0 голосов
/ 04 июля 2018

Если вы получаете более одного элемента, вы должны просмотреть весь список с помощью forEach.

Примерно так:

db.collection("cities").where("capital", "==", true)
    .get()
    .then(function(querySnapshot) {
        querySnapshot.forEach(function(doc) {
            // doc.data() is never undefined for query doc snapshots
            console.log(doc.id, " => ", doc.data());
        });
    })
    .catch(function(error) {
        console.log("Error getting documents: ", error);
    });

Вы можете найти больше информации здесь: https://firebase.google.com/docs/firestore/query-data/get-data

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