javascript - 如何等待 Firestore 数据库请求完成?

标签 javascript firebase google-cloud-firestore

我正在尝试使用 JavaScript 在 for 循环中循环从 Cloud Firestore 检索一堆文档。问题在于数据调用的延迟意味着重复检查一个元素。在调用该文档上的代码之前如何等待文档被检索?

for (i = 0; i < following.length; i++) {

            db.collection('users').doc(following[i]).get().then(function (doc) {
                insert += "<p class='follower'>" + doc.data().firstName + " " + doc.data().lastName + "</p>";
            })
        }

最佳答案

Firestore 文档的 get() 方法是异步的,并返回 Promise。您需要等待这些 promise 解决,然后才能迭代这些值。下面是一个执行此操作的示例:

const usersReference = db.collection("users");
const promises = following.map(fid => usersReference.doc(fid).get());
return Promise.all(promises).then(docs => {
  let insert = "";
  docs.forEach(doc => {
    insert += `<p class='follower'>${doc.data().firstName} ${doc.data().lastName}</p>`;
  });
  console.log(insert);
});

关于javascript - 如何等待 Firestore 数据库请求完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52596179/

相关文章:

javascript - 如何在不离开页面的情况下发送表单?

javascript - 如何从不同的 Firebase 项目获取数据?

android - 从系统托盘 android firebase FCM 中的通知中检索通知值

javascript - 获取表行数据 td 并选择

javascript - JQuery Mobile data-native-menu ="false"引发未定义的错误

firebase - 现在将服务器值设置为时间戳

firebase - Flutter:获取 Firebase 数据库引用子所有数据

firebase - Firestore 规则模拟器 - 资源未定义

Firebase:sendSignInLinkToEmail() 抛出: "The given sign-in provider is disabled for this Firebase project."

arrays - AngularFire2:创建文档并设置 map 数组