In Firebase I have two Documents. one is "users" and "posts".
Inside posts, I have added an id equal to the "users" collection id.
What I'm trying to achieve is when I'm getting posts I need to get post-added user data.
I'm getting all the posts but I cannot get related user data. Can anyone help me do this?
import {
collection,
query,
onSnapshot,
orderBy,
doc,
getDoc,
} from "firebase/firestore";
import { db } from "../../FireBaseConfig";
export default function Home() {
const [posts, setPosts] = useState();
const getPostUser = async (userID) => {
try {
const userQuery = doc(db, "users", userID);
const userRef = await getDoc(userQuery);
const userData = userRef.data();
return userData;
} catch (err) {
console.log(err);
}
};
useEffect(() => {
const getPosts = async () => {
try {
const q = query(collection(db, "posts"), orderBy("statusDate", "desc"));
const unsubscribe = onSnapshot(q, (querySnapshot) => {
let posts_arr = [];
let adsfadsfad = "";
querySnapshot.forEach(async (item, index, array) => {
getPostUser(item.data().id)
.then((res) => {
adsfadsfad.push(res);
})
.catch((err) => {
console.log(err);
});
console.log(adsfadsfad);
posts_arr.push(
<div className="home__posts--post" key={item.id}>
<div className="home__posts--post-user flex items-center">
{/* <img
src={abc["avatar"]}
alt={abc["avatar"]}
className="w-[50px] h-[50px] rounded-full"
/>
<h4>{abc["avatar"]}</h4> */}
{/* {asdasd} */}
</div>
<div>
{item.data().statusImage && (
<img
src={item.data().statusImage}
alt={item.data().status}
/>
)}
</div>
</div>
);
});
setPosts(posts_arr);
});
} catch (err) {
console.log(err);
}
};
getPosts();
}, []);
return (
<div className="home p-4 max-w-screen-sm mx-auto">
<div className="home__posts">{posts}</div>
</div>
);
}