我正在尝试使用 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/