【问题标题】:How can I wait for a Firestore database request to complete?如何等待 Firestore 数据库请求完成?
【发布时间】:2018-10-02 05:00:17
【问题描述】:

我正在尝试使用 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>";
            })
        }

【问题讨论】:

  • 我建议你探索 await new promise 并在循环中使用。

标签: javascript firebase google-cloud-firestore


【解决方案1】:

Firestore 文档的 get() 方法是异步的,并返回一个 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);
});

【讨论】:

  • 工作得几乎完美,只是做了一个小的编辑来纠正一个错字。谢谢!
  • 这对我不起作用...你能举一个你还没有 uid 的例子吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-13
  • 2015-04-17
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-06
  • 2017-07-04
相关资源
最近更新 更多