0
上下文:我的應用程序當前允許用戶創建一個帳戶,其中用戶名。點擊confirm
- 創建一個帳戶,在用戶名上運行檢查以驗證它不存在於usernames
集合內的文檔中,即,這隻允許在應用程序中唯一的用戶名。在創建之前檢查Firestore中是否存在一個集合
的用戶名添加至地圖時視圖創建 - 之前用戶按壓confirm
按鈕(I明白,這是潛在的問題)
public static void getAllNonAvailableUsernames() {
FirebaseFirestore.getInstance()
.collection("usernames")
.get().addOnCompleteListener(task -> {
List<DocumentSnapshot> snapshots = task.getResult().getDocuments();
for (DocumentSnapshot snap : snapshots) {
usedUsernames.put(snap.getId(), snap.get("owner"));
}
});
}
一個問題產生當兩個用戶碰巧選擇相同的用戶名進行註冊時。最後一個請求被處理,並覆蓋文檔中owner
場,同時允許用戶擁有相同的用戶名:
我不知道該如何去解決這個問題,因爲檢索在驗證發生之前,usernames
集合中的所有文檔可能沒有完成。
我試圖將其納入我的應用程序,但我得到'NOTAUTHENTICATED'錯誤。另外,當以文檔中的示例作爲參考時,我最終會看到用戶名文檔「出現」,好像它存在一樣,所以我無法檢查它是否不存在。 你能否提供一個例子。 –