我試圖在任何在 firestore 中洗掉檔案的經過身份驗證的用戶的 onWrite 云函式中獲取 UID(不是沒有此問題的實時資料庫)。原因是...我正在嘗試創建對集合中的檔案執行的所有操作的日志。我必須使用云功能,因為客戶端可以假設創建/編輯/洗掉檔案,然后阻止發送相應的日志條目。
我在其他 stackoverflow 問題中看到過,例如:
- Firestore - 云函式 - 獲取 uid
- 從 Cloud Functions for Firebase 中的 Firestore 觸發器獲取用戶 ID?
那公司的FireStore將不包括任何身份驗證資料在onWrite功能公司的FireStore,以及所接受的解決辦法是有像場updated_by,created_by,created_at,updated_at在檔案中創建/更新其使用火力權限驗證。這對于插入或更新的檔案非常onWrite有用,但是在云功能中洗掉的檔案只有change.before資料,而沒有change.after資料,這意味著您無法查看誰洗掉了檔案,最多也看不到洗掉前誰最后更新了檔案。
我正在嘗試以下一些變通方法(但他們有嚴重的批評者):
- 在檔案將被洗掉之前發送對檔案的更新。問題-> 可能有計時問題、去抖動問題、需要雜亂的權限以確保檔案只有在有正在進行的更新時才會被洗掉。
- 使用標記洗掉的欄位更新它,并在云函式中監視此標記,然后執行洗掉操作。問題-> 在洗掉專案之前會導致非常明顯的延遲。
有沒有人有更好的方法來做這樣的事情?謝謝!
uj5u.com熱心網友回復:
根本不要洗掉檔案。只需添加一個名為“已洗掉”的欄位,將其設定為 true,然后添加另一個帶有洗掉它的用戶的 UID 的欄位。在查詢中使用這些新欄位來決定是否要為任何給定查詢處理已洗掉的檔案。
在記錄洗掉的單獨集合中使用不同的檔案。每當您需要知道檔案是否已被洗掉時,請查詢該集合。或者在標記洗掉的不同資料庫中創建不同的記錄。
真的沒有其他選擇。使用現有檔案或創建新檔案來記錄更改。現有檔案是唯一可以查詢的內容 - 您無法查詢 Firestore 中不存在的資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/386103.html
標籤:节点.js 火力基地 谷歌云firestore 谷歌云功能
下一篇:為什么FirebaseCloudMessagingWeb客戶端messages.getToken()有時會產生不同的令牌?(相同的瀏覽器,相同的標簽)
