在firebase身份验证中将用户设为null

时间:2020-02-22 23:01:50

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

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

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());
})

我错了

2 个答案:

答案 0 :(得分:0)

auth.currentUser为空。这意味着在您调用该用户时,没有用户登录。您需要先检查这种情况,然后再使用为其分配的user变量。

答案 1 :(得分:0)

您的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());
    })
  }
})