Ввод имени пользователя, которого нет в базе данных, все равно дает мне «имя пользователя уже занято» - PullRequest
0 голосов
/ 20 сентября 2018

пример моей базы данных firebase: -Users -> -jjdsHGkjldsgJSKD -> -username: "kp", -email "kp@kp.com"

Это кодовый блок, который нужно проверить, когда имя пользователя выходит избаза данных firebase

mRef.child("Users").addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        for(DataSnapshot data: dataSnapshot.getChildren()) {
            if (data.child("username").exists()) {
                Toast.makeText(RegisterActivity.this, "USERNAME IS ALREADY TAKEN", Toast.LENGTH_LONG).show();
                Log.i("username", "Username used: " + data.child("username").getValue());
                count++;
            }
        }
    }
    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {

    }
});

1 Ответ

0 голосов
/ 20 сентября 2018

Вы немного от того, что будет работать.Это должно быть ближе:

String valueFromInputText = "kishkish96";
mRef.child("Users")
    .orderByChild("username");
    .equalTo(valueFromInputText)
    .addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()) {
            Toast.makeText(RegisterActivity.this, "USERNAME IS ALREADY TAKEN", Toast.LENGTH_LONG).show();
            Log.i("username", "Username used: " + data.child("username").getValue());
            count++;
        }
    }
    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
       throw databaseError.toException(); // don't ignore exceptions
    }
});

Изменения:

  1. Этот код создает запрос, который читает только те пользовательские узлы, которые имеют то же имя пользователя, которое было введено.
  2. Затем проверяется, существует ли моментальный снимок.Если это так, пользователь уже существует.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...