[英]How to update a specific field of data only one time for each user in firesrore in firebase v9?
我正在創建一個類似 sns 的 web 應用程序,並試圖實現一個“喜歡帖子”function。基本上每個帖子都有 firestore 中的數據,例如帖子的標題,帖子的圖片,帖子的喜歡數量等等。我想做的是,如果用戶點擊任何帖子上的贊按鈕,點擊帖子的贊數將增加 1。但是,我不知道如何限制每個用戶只能喜歡每個帖子一次。 我當前的代碼適用於增加喜歡的數量,但用戶可以在用戶點擊后喜歡帖子的次數。 我完全是 firebase、react 和 javascript 的初學者,非常感謝您的幫助。 謝謝你。
這是我的代碼,用於增加喜歡的數量。
const likeHandle = async () => {
const docRef = doc(db, "posts", postId);
await updateDoc(docRef, {
noLikes: noLikes + 1
});
}
您將無法在跟蹤點贊數量的同一文檔中大規模執行此操作,因為每個文檔都有最大大小。
您需要做的是將每對用戶和點贊的記錄存儲在單獨集合中其自己的文檔中,並檢查以確保任何新的點贊請求尚未在另一個集合中表示。 如果那對用戶和帖子有記錄,您的 UI 也應該禁用點贊,這樣用戶就不會看到您不希望他們選擇的選項。
沒有直接的方法來限制用戶寫入特定數據的頻率。
但是,您可以做的是:
usersWhoVoted
字段添加到文檔,或它下面的userWhoVoted
子集合。 您可能還應該使用原子increment
操作,以防止依賴於可能過時的客戶端 state(盡管您的安全規則應該捕獲並拒絕這種情況)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.