0

爲避免在各種應用程序(iOS,Android,Web)中重寫Firebase DB邏輯,我們之前使用服務/中間層來保存此邏輯。通過這種方式,應用程序不會直接與數據庫交互。 但是,在採用Firebase和Google雲端函數的新架構中,通過雲端函數路由所有數據庫調用是明智的,還是僅應根據用例選擇性地執行?使用Google Cloud Functions可以避免Firebase DB邏輯重複?

在我到目前爲止所看到的幾乎所有示例中,應用程序都直接與Firebase數據庫進行交互,而Cloud Functions僅用於傾聽某些事件並有選擇地使用。它們並不意味着是中間層。 然而,這種方法會導致需要在所有應用程序中複製數據庫邏輯。這種代碼重複可以避免嗎?

回答

0

是的。通過將應用程序代碼中的某些功能移入Cloud Functions,您只需在JavaScript中實現該邏輯即可:這對你在客戶端不需要的某些邏輯非常有用(太大,太祕密,太慢等)。

但是:

  • 每個客戶端仍然需要在代碼的函數雲訪問功能。這可以像通過數據庫SDK寫入一樣簡單,但也可以相當參與。
  • 該功能只有在用戶有網絡連接時纔可用。與客戶端功能不同,當用戶斷開/脫機時,它不起作用。
+0

謝謝弗蘭克!如果您使用Firebase功能,則會失去實時數據庫功能並回退到使用常規Web API調用。正如您所指出的那樣,僅針對不需要離線功能的功能和業務邏輯太複雜的情況,我將使用函數。其他任何內容都可以直接轉到Firebase Db以利用其實時功能。 –

+0

「如果您使用Firebase功能,則會失去實時數據庫功能並回退到使用常規Web API調用。」不必要。如果您有一個數據庫觸發的雲功能,並將其結果寫回數據庫,則客戶端應用程序仍可以作爲數據庫客戶端並獲得實時更新。請參閱以下示例:https://firebase.google.com/docs/functions/use-cases#perform_database_sanitization_and_maintenance –

+0

是的,回寫到數據庫的數據庫觸發的雲功能有助於利用實時功能。正如在可能功能文檔中提到的那樣,這在需要維護/額外處理數據的情況下很有用。但是,對於大多數數據庫操作(CRUD),我認爲不應該通過寫入隊列來使用函數,以避免重寫代碼。最好直接與客戶端Firebase SDK合作以利用離線處理功能,即使這意味着要分別爲所有不同的客戶端重新編寫代碼。 –

相關問題