繁体   English   中英

如何检索当前从 Firestore/Firebase 登录的用户信息?

[英]How to retrieve the user's info that is currently logged in from Firestore/Firebase?

大家好,我有一个关于 Firestore users的集合,每个集合都有displayNameemailuid ,并试图获取当前登录用户的 displayName 。

目前下面的代码正在正确获取所有用户,但不是登录的特定用户。注释掉的代码有点像一个解决方案,但我想我没有正确地做。 我已经尝试了一段时间,但找不到真正的方法,它应该很简单,但不知道我错过了什么。

 const [users, setUser] = useState([])

  useEffect(() => {
    ;(async () => {
      const users: any = []
      const db = getFirestore()
      const userRef = collection(db, 'users')
      // const userName = getAuth().currentUser?.displayName
      // const userDocument = query(userRef, where('displayName', '==', userName))
      // console.log('name', userName)
      try {
        const snapshot = await getDocs(userRef)
        snapshot.docs.forEach((doc) => {
          // const { displayName } = doc.data()
          users.push({
            ...doc.data(),
            id: doc.id,
            // displayName,
          })
        })
        console.log(users)
        setUser(users)
      } catch (err: any) {
        console.log(err.message)
      }
    })()
  }, [])
  1. 您需要“用户”集合中的登录用户数据/显示名称
  2. 您已经连接到 firebase/firestore,这意味着您正在维护一个有效的 firebase 配置文件/凭据
  3. 如果以上信息正确,那么这可能是适合您的解决方案
  • 从 firebase 配置文件导入firebase
  • 然后获取当前用户的uid和userProfile
const uid = firebase.auth().currentUser.uid;
const currentUserProfile = firebase.firestore().collection("users").doc(uid);
  • 然后就可以根据需要在useEffect中获取需要的数据
useEffect(() => {
    currentUserProfile.get()
        .then((doc) => {
            // const currentUserInfo = doc.data();
            const currentUserDisplayName = doc.data().displayName;
            // console.log(currentUserDisplayName)
            // now you can update your state with this value from here if required 
        })
        .catch((err) => {alert("Error in displaying Name!")})

}, [])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM