首页 > 解决方案 > Firebase 似乎试图在身份验证序列运行之前开始侦听快照更新。有任何解决这个问题的方法吗?

问题描述

似乎在firebase能够获取当前用户身份验证数据(例如用于登录的电子邮件)之前,它会尝试调用

   firestore.collection("users").doc(firebase.auth().currentUser.email).onSnapshot(function(doc) {
      console.log("check")
   });

问题是,它需要当前用户的电子邮件才能从数据库中访问集合中的正确文档。

有什么办法可以规避这个并等到 currentUser 定义?

标签: javascripthtmlfirebasefirebase-authentication

解决方案


如果您的代码依赖于经过身份验证的用户,您应该在onAuthStateChanged回调中运行它。例如:

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
   firestore.collection("users").doc(firebase.auth().currentUser.email).onSnapshot(function(doc) {
      console.log("check")
   });
  }
});

另请参阅Firebase 文档以获取经过身份验证的用户


推荐阅读