gpt4 book ai didi

javascript - 如何等待 QueryDocumentSnapshot.docs.forEach 结束返回

转载 作者:行者123 更新时间:2023-12-02 21:22:49 25 4
gpt4 key购买 nike

我正在使用 Firestore 从集合中获取所有文档。我想等待所有文档从数据库返回以返回一个函数。此返回必须是从集合中获取的文档的数组。目前我的控制台只打印一个 Promise 变量。

var getUsersSnapshot = async function() {
var db = firebase.firestore()
const usersSnapshot = await firebase
.firestore()
.collection("users")
.get();
var users = []
await usersSnapshot.docs.forEach(element => {
users.push(element.data())
});
return users
}

var getMonthlyByUserId = function () {
var users = getUsersSnapshot()
console.log(users)
return new Promise((resolve, reject) => {
resolve()
})
}

控制台写入的值为:

enter image description here

在控制台上我可以看到 Promise,但我期望的是值数组。

最佳答案

由于getUsersSnapshot是一个async函数,因此调用时需要使用await

var getMonthlyByUserId = async function () {
var users = await getUsersSnapshot()
console.log(users)
return users;
}

您所做的带有 Promise 的整个构造似乎没有必要,因为返回值已经被 promise 了。

<小时/>

你的getUsersSnapshot对我来说看起来很不寻常。我通常希望看到这样写:

var getUsersSnapshot = async function() {
const usersSnapshot = await firebase
.firestore()
.collection("users")
.get();
var users = usersSnapshot.docs.map(element => element.data());
return users
}

关于javascript - 如何等待 QueryDocumentSnapshot.docs.forEach 结束返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60807170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com