首页 > 解决方案 > 在firebase auth中将用户设为null

问题描述

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

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

我错了

标签: javascriptgoogle-cloud-firestorefirebase-authentication

解决方案


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

推荐阅读