【问题标题】:How can I get documents from Firestore for current user?如何从 Firestore 获取当前用户的文档?
【发布时间】:2021-12-29 21:33:10
【问题描述】:

我正在尝试在我的组件中显示来自 Firestore 数据库的数据。

这是我的功能:

const getData = async () => {
    const data = [];

    const querySnapshot = await getDocs(
      collection(databaseRef, "mK7DFNJgRAPmtvgrZh7X6AOj8cR2")
    );
    console.log(querySnapshot);
    querySnapshot.forEach((doc) => {
      console.log(doc.id, " => ", doc.data().Title);
      data.push({
        About: doc.data().About,
        Title: doc.data().Title,
        Who: doc.data().Who,
      });
    });
    setData(data);
  };

集合 ID = 当前登录用户。 我想显示每个文档。 一切正常,但在这里传递硬编码字符串:

      collection(databaseRef, "mK7DFNJgRAPmtvgrZh7X6AOj8cR2")

我想在存储我的 UID 的位置传递变量。

有什么办法吗?

【问题讨论】:

  • 可能是getUser().currentUser.uid?

标签: javascript reactjs firebase


【解决方案1】:

假设您的用户已登录,您应该能够通过firebase.auth().currentUser.uid 访问他们的 UID。 This question 的回答可能有助于获取有关获取当前用户 ID 的更多信息。

有了这个,你应该可以做到:

const querySnapshot = await getDocs(
    collection(databaseRef, firebase.auth().currentUser.uid)
);

获取当前用户的文档。

https://firebase.google.com/docs/reference/js/v8/firebase.auth.Auth#currentuser

【讨论】:

  • 我添加了:const auth = getAuth(); let UID = auth.currentUser.uid; 然后:const querySnapshot = await getDocs(collection(databaseRef, UID)); 现在我有一个错误:未处理的拒绝(TypeError):无法读取 null 的属性(读取 'uid')跨度>
  • 我正在使用 useEffect 挂钩来运行这个 getData() 函数。也许有问题? ` useEffect(() => { getData(); }, []);`
  • 听起来用户(还)尚未登录,您可能需要一个身份验证状态侦听器,如firebase.google.com/docs/auth/web/… 中的第一个 sn-p 所示。
  • @FrankvanPuffelen,我认为他是因为我有一种添加数据的方法并且一切正常:const addData = () => { const authentication = getAuth(); addDoc(collection(databaseRef, authentication.lastNotifiedUid), { code here })
猜你喜欢
  • 2018-11-09
  • 2022-11-15
  • 2021-07-31
  • 2020-02-21
  • 2022-07-21
  • 2020-01-11
  • 2021-06-16
  • 2020-03-03
  • 2021-07-17
相关资源
最近更新 更多