【问题标题】:Uncaught TypeError: Cannot read properties of null (reading 'email')未捕获的 TypeError:无法读取 null 的属性(正在读取 \'email\')
【发布时间】:2022-11-21 22:34:15
【问题描述】:

我正在尝试获取当前登录用户的电子邮件,然后我将使用它从与该用户对应的文档中获取名称数据字段。但是,我不断收到此错误。任何有关如何解决此问题的想法将不胜感激。

此外,每当我对电子邮件问题进行任何更改时,都会收到以下错误: 未捕获的类型错误:firebase__WEBPACK_IMPORTED_MODULE_4_.db.collection 不是函数

当我刷新页面时,它返回到标题中的错误。


  const auth = getAuth();
  const user = auth.currentUser;
  const userEmail = user.email;
  var clubName;
  
  db.collection("users").where("email", "==", userEmail).get().then(function(querySnapshot) {
      querySnapshot.forEach(function(doc) {
          console.log(doc.id, " => ", doc.data());
          var data = doc.data();
          clubName = data.name;   
        });
  })
  .catch(function(error) {
      console.log("Error getting documents: ", error);
  });

  console.log("THE DATA YOU ARE LOOKING FOR: " + clubName);

  const q = query(collection(db, "requests"), where("SendTo", "==", clubName)); 

注意:在上面的代码中,我使用了 2 个不同的 firebase 数据库,一个称为 users,它有字段 {email, name, password, job},另一个叫做 requests,它有以下字段 {From, SendTo, type, content, header}

【问题讨论】:

  • 您是否尝试登录user
  • auth.currentUsernull
  • @Konrad 我该如何解决?
  • 我不知道你的getAuth长什么样
  • @alwaysneedhelp1901 好吧,如果auth.currentUsernull,您将收到同样的错误。您应该检查 currentUser 是否为 null,如果是,则执行其他操作,例如发送到登录页面、显示登录模式或其他内容。

标签: javascript reactjs firebase


【解决方案1】:

auth.currentUser 可能为空,因为 auth 对象尚未完成初始化。

假设您使用的是 firebase v9,请尝试使用 onAuthStateChanged

import { getAuth, onAuthStateChanged } from "firebase/auth";

const auth = getAuth();
onAuthStateChanged(auth, (user) => {
  if (user) {
   // User is signed in

  } else {
    // User is signed out  

  }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-20
    • 2022-11-24
    • 2022-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 2017-07-15
    相关资源
    最近更新 更多