iT邦幫忙

2025 iThome 鐵人賽

DAY 12
0
Modern Web

FlowNest系列 第 12

Day12_加強留言牆功能

  • 分享至 

  • xImage
  •  

留言牆功能

今天把留言牆的功能做出來,完成以下功能:

  • 使用者在完成專注任務後,可以把成果分享到留言牆
  • 所有貼文公開可讀
  • 發文與互動需登入

進行以下測試

  • 發文測試

    • 兩個帳號分別新增貼文,另一方可以即時看到
      先用使用者C登入、完成專注任務
      https://ithelp.ithome.com.tw/upload/images/20250923/201684064tmZi0tnta.png
      接著分享貼文
      https://ithelp.ithome.com.tw/upload/images/20250923/20168406yNIaVZJNK7.png
      開另外一個瀏覽器、用使用者S登入,確認可以看到貼文
      https://ithelp.ithome.com.tw/upload/images/20250923/20168406pUd6LhJmp1.png
  • 按讚測試&追蹤測試

    • A 對 B 貼文點讚 → likeCount + 1
    • A 再次點擊 → 不會重複加
    • A 追蹤 B → Firestore 出現 follows/{A_B}
    • 作者頁 /u/B 顯示「已追蹤」
      點讚、追蹤後,會這樣顯示
      https://ithelp.ithome.com.tw/upload/images/20250923/20168406Gnr9jtiUjt.png

不用登入也可以看到貼文
https://ithelp.ithome.com.tw/upload/images/20250923/20168406xKfsCIqkMC.png

追蹤功能這樣寫

import { doc, setDoc } from "firebase/firestore";

async function followUser(followerId: string, targetId: string) {
  const ref = doc(db, "follows", `${followerId}_${targetId}`);
  await setDoc(ref, {
    followerId,
    targetId,
    createdAt: Date.now()
  });
}

按讚功能這樣寫

import { doc, updateDoc, increment } from "firebase/firestore";

async function likePost(postId: string, userId: string) {
  const ref = doc(db, "posts", postId);
  await updateDoc(ref, {
    likeCount: increment(1),
    likedBy: userId
  });
}

上一篇
Day11_增加留言牆&Navbar
下一篇
Day13_進度整理
系列文
FlowNest16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言