// doc ์์ฑ
const onSubmit = async (event) => {
event.preventDefault();
await addDoc(collection(dbService, "tweets"), {
tweet,
createAt: Date.now(),
});
setTweet("");
};
// doc ๊ฐ์ ธ์ค๊ธฐ
const getTweets = async () => {
const dbTweets = await getDocs(collection(dbService, "tweets"));
dbTweets.forEach((document) => {
const tweetObj = {
...document.data(),
id: document.id,
};
setTweets((prev) => [tweetObj, ...prev]);
});
};
or
// onSnapshot์ ์ด์ฉํ๋ฉด db์ ๋ณ๋์ฌํญ์ด ์๊ธธ๋๋ง๋ค ๊ฐฑ์ (listener)
useEffect(() => {
onSnapshot(collection(dbService, "tweets"), (snapshot) => {
const tweetArray = snapshot.docs.map((doc) => ({
id: doc.id,
...doc.data(),
}));
setTweets(tweetArray);
});
}, []);
// doc ์ญ์
await deleteDoc(doc(dbService, "tweets", `${tweetObj.id}`));
// doc ์
๋ฐ์ดํธ
await updateDoc(doc(dbService, "tweets", `${tweetObj.id}`), {
text: newTweet,
});