iT邦幫忙

2025 iThome 鐵人賽

DAY 13
0
生成式 AI

30 天 Vibe Coding:全端 × 機器學習的實作挑戰系列 第 13

Day 13|30 天 Vibe Coding:覺得舊日記太恥,可以刪除或編輯

  • 分享至 

  • xImage
  •  

昨天我們讓日記上了 Firestore,並且加上帳號保護,確保只有自己能看到
不過有個問題:日記寫久了總會有幾篇看不下去(或打錯字),如果不能修改或刪除,就太不方便了

所以今天的目標就是把 CRUD 補齊,讓日記能編輯、刪除,而且列表會依日期排序


今日目標

  1. 列表排序
  • 預設依日期新 → 舊顯示
  • Firestore 查詢時使用 orderBy("date", "desc")
  1. 刪除日記
  • 在清單中每筆日記旁邊放刪除按鈕
  • 點擊後 → deleteDoc(doc(db, "users", uid, "diary", entryId))
  • 立即更新 UI
  1. 編輯日記
  • 點擊「編輯」 → TextArea 彈出既有內容
  • 修改後按「更新」 → updateDoc() 同步 Firestore
  • 編輯完成後自動關閉輸入框
  1. UI 提示
  • 編輯中文案顯示「更新成功」
  • 刪除後日記從清單消失

Prompt(僅供參考)

幫我加上 CRUD 功能(編輯、刪除、排序)。

=== 功能需求 ===
1. 資料結構
   - id (uuid)
   - date (ISO)
   - content (string)
   - isDeleted (boolean, 預設 false,用來軟刪除)

2. 列表顯示
   - 依日期遞減排序(新到舊)
   - 每筆顯示日期 | 摘要前 30 字
   - 點選「編輯」可進入編輯模式,修改後存回 Firestore
   - 點選「刪除」→ 將 isDeleted 設為 true(而不是直接刪掉)

3. 新增/修改
   - 新增日記預設 isDeleted=false
   - 編輯時更新 content 與 updatedAt(可選)

4. UI 行為
   - 編輯:在列表項目右側有「編輯」按鈕,點擊後切換成 TextArea + 儲存按鈕
   - 刪除:在列表項目右側有「刪除」按鈕,點擊後該筆從清單消失(實際是 isDeleted=true)
   - 清單只顯示 isDeleted=false 的資料

5. Firestore 整合
   - 集合路徑:users/{uid}/diaries/{docId}
   - 新增:addDoc()
   - 編輯:updateDoc()
   - 軟刪除:updateDoc(isDeleted=true)
   - 讀取:query where(isDeleted==false),orderBy(date, "desc")

6. 額外需求
   - 二次確認刪除(例如 confirm 彈窗)
   - 保留「垃圾桶」頁面(只顯示 isDeleted=true 的日記),支援還原/永久刪除

今日驗收 ✅

  1. 日記列表依日期新 → 舊排序顯示
    https://ithelp.ithome.com.tw/upload/images/20250907/201409989ESAt54RK1.png
  2. 點「刪除」 → Firestore 文件刪除,清單同步更新
    https://ithelp.ithome.com.tw/upload/images/20250907/201409983bydoGqEMB.png
  3. 點「編輯」 → 修改內容 → 按「更新」 → Firestore 同步更新,清單立即反映
    https://ithelp.ithome.com.tw/upload/images/20250907/20140998AwmCCaFtkJ.png
  4. 所有操作都有提示,避免誤操作或存檔不確定感

明日預告

Day 14 要幫日記加上 情緒標籤(開心、難過、生氣…),之後就能用圖表分析自己的心情變化,做出「情緒追蹤儀表板」


上一篇
Day 12|30 天 Vibe Coding:我的日記只有我能看
下一篇
Day 14|30 天 Vibe Coding:心情自己都搞不清楚,交給情緒分析吧
系列文
30 天 Vibe Coding:全端 × 機器學習的實作挑戰14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言