[英]How can I get user details by UID after login with React and Firestore?
在這里,我從 Firestore 中獲取所有文檔:
useEffect(() => {
const getUsers = async () => {
const data = await getDocs(usersCollectionRef);
setUsers(data.docs.map((doc) => ({
...doc.data(),
id: doc.id,
})))
};
getUsers();
}, []);
然后我把它放在下面的 div 上顯示細節:
<div>
{users.map((user) => {
return (<div className="card-body" key={user.id}>
<p className="card-text"><u>User details</u></p>
<p className='card-text'>User : {user.id}</p>
<p className='card-text'>User : {user.name}</p>
<p className='card-text'>Your weight : {user.weight}</p>
<p className='card-text'>Your height : {user.height}</p>
<p className='card-text'>Age : {user.age}</p>
</div>)
})}
</div>
如果 Firestore 數據庫中有超過 1 個用戶,它會顯示所有用戶的所有文檔:在下圖中,您可以看到存儲在數據庫中的兩個用戶的詳細信息
您正在使用getDocs(collectionRef)
從集合中獲取所有文檔。 如果您只想獲取當前用戶的文檔,則可以將getDoc()
與DocumentReference
一起使用,如下所示:
const [user, setUser] = useState(null);
useEffect(() => {
onAuthStateChanged(auth, (user) => {
if (user) {
const uid = user.uid;
const snapshot = await getDoc(doc(db, "users", uid));
if (snapshot.exists()) {
setUser(snapshot.data())
} else {
console.log("User doc missing")
}
} else {
console.log("User not logged in")
setUser(null);
}
});
}, []);
那么你不必使用map
因為user
不是數組:
<div>
{true ? (
<div className="card-body" key={user.id}>
<p className="card-text">
<u>User details</u>
</p>
<p className="card-text">User : {user.id}</p>
<p className="card-text">User : {user.name}</p>
<p className="card-text">Your weight : {user.weight}</p>
<p className="card-text">Your height : {user.height}</p>
<p className="card-text">Age : {user.age}</p>
</div>
) : (
<p>No user logged in</p>
)}
</div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.