我使用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()
})
}
控制台中写入的值为:
在控制台上,我可以看到Promise,但我期望的是值的数组。
发布于 2020-03-23 11:26:29
因为getUsersSnapshot
是一个async
函数,所以在调用它时需要使用await
。
var getMonthlyByUserId = async function () {
var users = await getUsersSnapshot()
console.log(users)
return users;
}
使用Promise
进行的整个构造似乎不必要,因为返回值已经被省略了。
你的getUsersSnapshot
在我看来不同寻常。我通常希望看到它写成这样:
var getUsersSnapshot = async function() {
const usersSnapshot = await firebase
.firestore()
.collection("users")
.get();
var users = usersSnapshot.docs.map(element => element.data());
return users
}
发布于 2020-03-23 10:57:18
您可以使用then()
从Promise
中获取值
var getMonthlyByUserId = function () {
getUsersSnapshot().then((values) =>{
console.log(values);
});
}
https://stackoverflow.com/questions/60807170
复制相似问题