1

我喜歡使用firebase函數來測試我定義的firebase規則。Firebase的雲端函數:如何以現有用戶的身份讀取/寫入數據庫?

我想讀取/寫入實時數據庫作爲現有用戶來測試規則是否按預期工作。

getting started page閱讀,我可以寫信給實時數據庫管理員如下: admin.database().ref('/messages').push({original: 'some text'});

我如何可以做同樣的,因爲我已經在火力而不是作爲管理員創建的用戶?

+0

你在寫什麼類型的函數?數據庫觸發器? –

+0

嗨,道格,我想寫一個Http函數;該函數將以已創建的用戶身份寫入實時數據庫。根據返回結果,我可以找到我定義的規則是否正確。 –

回答

2

我相信當你從觸發事件中獲得Delta Snapshot時,該快照的當前狀態與用戶綁定。由於Firebase團隊正在爲您提供無服務器環境,因此它們也會附加管理員,因爲它位於安全位置。

因此,只需從當前快照中抓取ref,就能讓您測試數據庫規則。只是爲了澄清,我說的是snapshot.ref,而不是snapshot.adminRef

這裏是他們的documentation參考:

返回參照數據庫位置觸發寫發生的位置。此引用與執行寫入的客戶端具有相同的最終用戶權限。因此,如果未經身份驗證的客戶端執行寫入操作,則此引用未經身份驗證。如果執行寫入的客戶端被認證爲特定的Firebase身份驗證用戶,則該引用將被認證爲同一用戶。

+0

感謝JamWils。我希望能夠以我創建的現有用戶的身份寫入實時數據庫。然後從返回的結果(回調/承諾),我可以找出我定義的安全規則是否工作。 –

+0

是的,使用來自事件的** Delta Snapshot **並抓取該參考,應該獲得用戶的許可。這就是我寫'snapshot.ref'時所指的。在事件進入的情況下,我想你正在尋找'event.data.ref'。 – JamWils

相關問題