2017-06-19 109 views
0

我在這裏知道這個問題很多,但我不知道這一點。這是關於聊天應用程序。刪除Firebase中的舊數據

當消息被存儲到firebase數據庫。隨着時間的推移它會變得越來越大,我想刪除它。我應該什麼時候刪除這個?我只想留下最後10個數據。這意味着如果我離開了應用程序,並再次進入,它似乎只有最後10句,我知道的功能limitToFirst和limitToLast(但這不是刪除的東西。)

如果我支付firebase服務器,你知道,如果數據庫的數據量大將會更加昂貴。但我只想至少留下最後10句話。 當他們確實回來時,他們可以看到最後10句話,並希望刪除除此之外的內容。我該怎麼做呢?

我看到了使用日期的答案,但我不想那樣。那是唯一的答案嗎?如果我必須這樣做,當我刪除它們?我什麼時候調用刪除功能?

我知道如何做到這一點,但什麼時候?如果在應用程序中,有很多朋友,我打開聊天屏幕聊天我的朋友。那個時候我應該使用remove函數刪除它們?我如何保存這個服務器付款?

我不想花很多錢。我希望它們在我的Firebase數據庫控制檯中清晰明瞭,而不是骯髒。所以想刪除它們。我必須做哪個?哪個時間是我應該刪除它們的最佳時間?什麼時候打開它?或關閉它時?或者當用戶停止我的應用程序。

回答

1

您可以通過一種非常簡單的方式實現此目的。您可以在持有消息的節點上使用getChildrenCount()方法查看消息的確切數量。如果您使用push()方法生成的隨機密鑰作爲標識符,那麼刪除額外的消息非常容易。由於記錄是在默認情況下按日期的訂單,你可以使用limitToLast(limit)方法很容易地查詢數據庫,比刪除這樣的郵件:

yourRef.child("messages").child(messageId).removeValue(); 

另一種方式實現這一目標是使用Cloud Functions for Firebase

希望它有幫助。

+0

非常感謝,我應該何時將其刪除?當用戶發送消息時,那我必須在我自己的代碼中使用getChildrenCount()。如果計數大於10,那麼我應該刪除它們?我很困惑,時機。想知道通常在聊天應用程序中刪除的時間... –

+0

我建議您每次用戶啓動應用程序時使用一次。並非每次用戶發送消息。如果用戶在一個會話中發送超過10條消息,只顯示10條消息,則可以使用'limitToLast(10)'方法。如果每次用戶發送第11條消息時都會刪除一條消息,這意味着您不需要更多的連接。您只需要刪除一次。 –

+0

耶你肯定對我很有幫助謝謝。你的意思是當用戶打開聊天應用(聊天,屏幕活動)。那一次,我應該刪除一次? –

0

你可以使用firebase functions刪除舊數據,當新數據庫添加到最佳時間時,可以保留最近的100條消息或更少。

+0

哦,你告訴我關於時間,所以謝謝。我必須使用它們的功能來刪除它們?有沒有辦法自動刪除它們?或者我只是使用getChildrenCount()繼續檢查它。 –

+0

檢查childrencount最佳選擇,或通過每個時間段使用節點安排作業 –

+0

有沒有什麼辦法可以像MYSQL一樣在Firebase中安排作業?我的天啊,我不知道。那是什麼? –