Contexte: Mon application permet actuellement aux utilisateurs de créer un compte, avec un nom d'utilisateur. En cliquant sur confirm
- pour créer un compte, une vérification est exécutée sur le nom d'utilisateur pour vérifier qu'il n'existe pas en tant que document dans la collection usernames
i.e cela permet uniquement des noms d'utilisateur uniques au sein de l'application.Vérifier si une collection existe dans Firestore avant de la créer
Les noms d'utilisateurs ont été ajoutés à une carte lorsque la vue a été créé - avant l'utilisateur en appuyant sur le bouton confirm
(je comprends que c'est la question sous-jacente)
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"));
}
});
}
Un problème se pose lorsque deux utilisateurs choisissent le même nom d'utilisateur pour s'inscrire. La dernière demande est traitée et remplace le champ owner
dans le document, les deux permettant aux utilisateurs d'avoir le même nom d'utilisateur:
Je ne suis pas sûr comment s'y prendre pour résoudre ce problème, étant donné que la récupération des tous les documents de la collection usernames
peuvent ne pas se terminer avant la validation.
J'ai essayé d'incorporer ceci dans mon application, mais je reçois une erreur 'NOTAUTHENTICATED'. Aussi, en suivant les exemples dans les docs comme référence, je me retrouve avec le document d'utilisateur "apparaissant" comme s'il existait, donc je ne peux pas vérifier si ce n'est pas là. Pouvez-vous donner un exemple. –