javascript - 使用 FireStore 时 For 循环仅进行最后一次迭代

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

我正在尝试比较 Firebase/Firestore 数据库中的值,并且我正在根据值是否为真更改 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";
        }
    });

}

最佳答案

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

关于javascript - 使用 FireStore 时 For 循环仅进行最后一次迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51180420/

相关文章:

javascript - 如何获取vuejs中发布的数据?

javascript - 我们可以说这是一个 IIFE 吗?!?- 在 Javascript 中

Javascript/Jquery 复选框条件超链接

javascript - Firebase >> 用户收藏夹列表

python - 如何使用 train_test_split 在交叉验证中保持测试大小不变?

javascript - 将项目插入数组并在 JavaScript 中返回它们

javascript - 在 Javascript 中使用带引号的字符串内的变量?

java - Android 通知打开多次而不是只打开一次

python - 在 Python 中创建大型数组

ios - Firebase iOS SDK - 缺少数据库 URL