【发布时间】:2021-04-12 12:40:06
【问题描述】:
我想从 firestore 获取用户数据,但函数的行为不符合我的要求。 当我运行 init 函数时,我在控制台中收到如下响应:" in init"、"after"、"null"、"user is active",但我想收到如下响应: "user is active", "in init", user data instead null," after";
我知道这可能很简单,但我整天坐在这个问题上。 我应该怎么做才能按此顺序获取数据?
init()
async function init () {
await userIsActive()
console.log("in init");
await getDaySpending();
console.log("after") */
}
function userIsActive(){
firebaseApp.auth().onAuthStateChanged( user=>{
if(user){
console.log("user is active");
return true
}else{
console.log("no user");
return false
}
})
}
function getDaySpending(period = '7-2020') {
const user = firebase.auth().currentUser;
console.log(user) //I got null instead user data
if(!user) return;
const uid = user.uid;
const snap = await firebase.firestore().collection(uid).doc(period).get();
if(snap.exists) {
return snap.data().spending;
} else {
// handle the case where there was no data
}
}
【问题讨论】:
-
代码中没有“null”登录,你的意思是“no user”吗?
-
我延迟了不小心登录。是的,我得到了 null
标签: javascript firebase asynchronous google-cloud-firestore