【问题标题】:getting user as null in firebase auth在firebase auth中将用户设为null
【发布时间】:2020-02-22 23:01:50
【问题描述】:

我正在尝试收听文档中的更改,但出现此错误

Uncaught TypeError: Cannot read property 'uid' of null

这是我的 javascript 代码

var user = auth.currentUser;
db.collection('user-intro').doc(user.uid).onSnapshot(function(doc){
    console.log(doc.data());
})

我错了

【问题讨论】:

    标签: javascript google-cloud-firestore firebase-authentication


    【解决方案1】:

    您的auth.currentUser 在用户登录之前获取用户。

    如果用户刚刚登录,或者您刷新页面,通常会发生这种情况。虽然 Firebase 会在页面重新加载时恢复身份验证状态,但这需要一些时间,因为它需要根据服务器检查凭据。

    为确保您的代码仅在身份验证状态恢复后运行,您需要将其包装在 onAuthStateChanged 处理程序中:

    firebase.auth().onAuthStateChange(function(user) {
      if (user) {
        db.collection('user-intro').doc(user.uid).onSnapshot(function(doc){
          console.log(doc.data());
        })
      }
    })
    

    【讨论】:

      【解决方案2】:

      auth.currentUser 为空。这意味着在您调用它的那一刻没有用户登录。在使用分配给它的 user 变量之前,您需要检查这种情况。

      【讨论】:

      • 这不是 sdk 在您访问 currentUser 时告诉您的内容。也许您应该改用侦听器,以便您知道 SDK 告诉您用户是已知的。它不会在新页面加载时立即可用:firebase.google.com/docs/auth/web/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-15
      • 2020-02-04
      • 2020-04-20
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      • 2020-11-14
      相关资源
      最近更新 更多