【问题标题】:Uncaught (in promise) TypeError: Cannot read properties of null (reading 'uid')Uncaught (in promise) TypeError: Cannot read properties of null (reading 'uid')
【发布时间】:2022-07-01 12:54:55
【问题描述】:

我正在尝试获取 current.user.uid 拥有的宠物列表,但我遇到了后端代码问题。声明的错误

Uncaught (in promise) TypeError: Cannot read properties of null (读“uid”)


这是我的脚本

enter code here<script>

 // @ is an alias to /src
import getUser from "@/composables/getUser"
import { auth, db } from "@/firebase/config";
import {signOut} from "firebase/auth";
import { collection, onSnapshot, query, where  } from '@firebase/firestore';

export default {
 name: 'HomeView',
 setup(){

  const {user} = getUser()
  const router = useRouter()
  const q = query(collection(db,"pets"),where("UserID", "==", user.value.uid));
  const unsubscribe = onSnapshot(q,(querySnapshot)=>{
  const pet = [];
  querySnapshot.forEach((doc)=> {
    pet.push(...doc.data())
  });
  console.log("Current pets :", pet.join(","))
 })

  return {q, unsubscribe ,error}
 }
}

firebase diagram


所以,实际上我希望在列表中显示当前 uid 的文档 谢谢你帮助我

【问题讨论】:

  • 看起来user.value 为空,而您正在尝试读取它的属性uid

标签: javascript firebase google-cloud-firestore


【解决方案1】:

您从const {user} = getUser() 获取用户,而该用户来自"@/composables/getUser"

请分享依赖项中的代码,因为听起来好像在执行时没有提供用户对象。这可能是由于两个原因:

  1. 用户未登录。在这种情况下,您可能希望显示未经身份验证的视图。
  2. HomeView 在加载用户状态之前呈现。在这种情况下,您可能会因为异步代码而遇到计时问题。

通常您会使用onAuthStateChanged 来检测用户何时登录/注销以更新您的应用程序的状态。

import { onAuthStateChanged } from "firebase/auth"

onAuthStateChanged(auth, (user) => {
  // Do something with user
  console.log(user.uid);
});

【讨论】:

    猜你喜欢
    • 2021-12-21
    • 2021-12-12
    • 1970-01-01
    • 2022-01-11
    • 2021-11-10
    • 2022-01-11
    • 1970-01-01
    • 2022-10-09
    • 2022-07-21
    相关资源
    最近更新 更多