亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Firebase:如何在排隊寫操作期間管理UI更改?

Firebase:如何在排隊寫操作期間管理UI更改?

郎朗坤 2021-04-07 15:15:43
我在啟用了磁盤持久性的Android應用中使用Firebase實時數據庫。當用戶首次打開應用程序時,我讀取身份驗證狀態,如果該值為null,則顯示登錄屏幕,登錄后,我將username根據該用戶ID將其存儲在實時數據庫中。如果用戶名為空,那么我將顯示username設置屏幕,他將在其中選擇唯一的用戶名username。在用戶名設置階段連接斷開時會出現問題。username尚未寫入數據庫,但是當他下次打開應用程序時,username它將不會為null,因為實時數據庫為我提供了存儲在緩存中的值。因此,我進入主屏幕,但是如果在此階段其他人選擇了相同的用戶名怎么辦?我維護之間的雙向映射uid,并username在此建議的答復我不能使用事務,因為一次只能在一條路徑上運行事務,但就我而言,我必須自動更新兩條路徑。我還設置了安全規則來維護唯一的用戶名,但是該如何處理已經越過用戶名設置屏幕的用戶。
查看完整描述

1 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

如果在此階段其他人選擇了相同的用戶名怎么辦?


每當您要對用戶名執行寫操作時,都需要確保其唯一性。要檢查Firebase實時數據庫中是否存在用戶名,需要執行以下查詢:


DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();

Query query = rootRef.child("users").orderByChild("userName").equalTo(userName);

query.addValueEventListener(/* ... */);

因此,如果用戶在脫機時嘗試設置/更改用戶名,則上述查詢將添加到隊列中。一旦用戶重新建立連接,脫機時所做的每個更改都將在Firebase服務器上更新。換句話說,以上查詢將在服務器上提交。因此,如果用戶選擇了脫機時數據庫中已經存在的用戶名,那么當其重新聯機時,他將收到一條消息,提示用戶名已經存在。


我不能使用事務,因為一次只能在一條路徑上運行事務,但就我而言,我必須自動更新兩條路徑。


我不能使用事務,因為它只能在一條路徑上運行,您根本不能使用事務。不支持離線使用交易。這是因為事務絕對需要與服務器進行往返通信,以確保事務內的代碼成功完成。因此,交易只能在您在線時執行。


查看完整回答
反對 回復 2021-04-14
  • 1 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號