对于循环,在使用FireStore时仅进行最后一次迭代

时间:2018-07-04 20:30:23

标签: javascript firebase for-loop google-cloud-firestore

我正在尝试比较Firebase / Firestore数据库中的值,并且我根据值是否为true来更改div边框样式。 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 :(得分:1)

如果要获得多个元素,则应使用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