Kontext: Meine Anwendung ermöglicht Benutzern derzeit das Erstellen eines Kontos mit einem Benutzernamen. Nach dem Klicken auf confirm
- um ein Konto zu erstellen, wird eine Überprüfung auf dem Benutzername ausgeführt, um zu überprüfen, dass es nicht als ein Dokument innerhalb der Sammlung d. H. Dies ermöglicht nur eindeutige Benutzernamen in der Anwendung.Überprüfen, ob eine Sammlung in Firestore vorhanden ist, bevor sie erstellt wird
Die Benutzernamen wurden zu einer Karte hinzugefügt, wenn die Ansicht erstellt wurde - vor dem Benutzer Drücken der confirm
Taste (Ich verstehe, dass dies das zugrunde liegende Problem ist)
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"));
}
});
}
Ein Problem entsteht wenn zwei Benutzer zufällig denselben Benutzernamen für die Registrierung auswählen. Die letzte Anforderung wird verarbeitet und überschreibt die owner
Feld innerhalb des Dokuments , so dass beide Benutzer denselben Benutzernamen haben:
Ich bin nicht sicher, wie über die Lösung dieses Problems zu gehen, da das Abrufen von Alle Dokumente innerhalb der usernames
-Sammlung werden möglicherweise nicht beendet, bevor die Überprüfung durchgeführt wird.
Ich habe versucht, dies in meine Anwendung zu integrieren, aber ich bekomme einen 'NOTAUTHENTICATED' Fehler. Wenn ich die Beispiele in den Dokumenten als Referenz befolge, sehe ich schließlich, dass das Benutzername-Dokument "erscheint", als ob es existiert, so dass ich nicht prüfen kann, ob es da ist. Können Sie ein Beispiel angeben. –