2017-05-15 67 views
1

我正在研究允許將數據發佈到Firebase的社交iOS應用程序。不過,我想清除所有超過1小時的帖子。 Instagram故事是一個很好的例子,在24小時後圖像被刪除。我在想的方法包括在endTime超過當前時間後提交startTime和endTime時間戳並刪除數據客戶端。另一方面,這將需要24/7用戶的活動,因爲如果用戶的數據不經常打開應用程序,則永遠不會刪除用戶的數據。我相信我需要一個服務器來處理這個問題。 我想請教你如何實現這個服務器端的建議和幫助 - 因爲我相信這是唯一可能的方式。定期從Firebase中刪除數據

+1

你會想看看雲功能的火力地堡,它允許您運行在谷歌的服務器的JavaScript代碼片段:https://firebase.google.com/docs/functions/use-cases#perform_database_sanitization_and_maintenance 。還有看看我對這個問題的答案,看看如何查詢刪除的數據:http://stackoverflow.com/questions/32004582/delete-firebase-data-older-than-2-hours –

+0

我已經創建Cloud Functions中的一個函數,就像你發給我的答案一樣。我的問題是如何執行該功能,即何時調用該函數? 我閱讀了文檔並看到了一個onWrite事件。我是否需要使用該事件,或者有沒有辦法定期執行該功能以刪除1小時以前的數據? –

回答

4

解決方案1 ​​ - 雲功能

登錄火力點,然後選擇您的應用程序,你現在將是應用概覽頁面上。選擇雲功能項目。這將允許您基於觸發器執行一些javaScript,有許多不同類型的觸發器,例如數據庫觸發器或身份驗證觸發器。在這種情況下,您希望觸發器基於時間。

也就是說這一個:

enter image description here

火力地堡闡釋了雲功能比我好的人以下:

你編寫和部署一個功能之後,谷歌的服務器開始管理功能立即監聽事件並在觸發時運行該功能。隨着負載的增加或減少,Google通過快速擴展運行您的功能所需的虛擬服務器實例的數量來做出響應。

函數

的顯影劑爲一個新的函數寫入代碼,選擇事件提供者(如實時數據庫),並限定在其下的功能應該執行條件的生命週期。 開發人員部署該功能,Firebase將其連接到選定的事件提供程序。 當事件提供程序生成與函數條件匹配的事件時,將調用該代碼。 如果該函數忙於處理許多事件,Google會創建更多實例來更快地處理工作。如果該功能空閒,則會清除實例。 當開發人員通過部署更新的代碼更新函數時,舊版本的所有實例都將被清理並由新實例替換。 當開發人員刪除該函數時,將清除所有實例,並刪除該函數與事件提供程序之間的連接。

來源:https://firebase.google.com/docs/functions/

解決方案2 - 服務器+ Cron作業(我的偏好)

  1. 在購買包月便宜的服務器(不需要任何花哨的應該是一個一個月幾美元),將努力找到一個允許Cron工作的免費項目。

  2. 編寫一個連接到firebase數據庫的腳本並刪除超過一個小時的所有帖子。

  3. 在您的服務器儀表板/控制面板上創建一個新的Cron作業,計劃每小時運行一次並將其指向您剛寫入的腳本。