Firebase, проверьте, если данные уже существуют, прежде чем нажать - PullRequest
0 голосов
/ 04 декабря 2018

У меня проблемы с данными addind в firebase, мой код, который должен проверять, зарегистрирована ли учетная запись, не работает должным образом.Вот код и используемая структура:

        mDatabase = FirebaseDatabase.getInstance().getReference("Users");

  mDatabase.addListenerForSingleValueEvent(new ValueEventListener() {@Override
        public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot data: dataSnapshot.getChildren()){
            Log.d("child:",data.getKey());
            if (data.child(user.getName()).exists()) {

              Log.d("child exists",user.getName());
              Toast.makeText(getApplicationContext(),
                    "child already exists",
                     Toast.LENGTH_LONG).show();
                     continue;
            } else {
               mDatabase.push().setValue(user);
            }
        }
      }

Структура structure firebase

Правила:

{
  /* Visit https://firebase.google.com/docs/database/security to learn more about security rules. */
  "rules": {
    ".read": true,
    ".write": true
  }
}

Вместо этого добавляется пользовательввода раздела if ...

1 Ответ

0 голосов
/ 04 декабря 2018

Что вы можете сделать, это использовать orderByChild() и equalTo() напрямую, чтобы найти, существует ли такой пользователь с определенным именем пользователя или нет.

Это прекрасно работает в этой структуре базы данных, и это будетлучшее решение.Код будет выглядеть примерно так:

reference.orderByChild("name").equalTo(user.getName()).addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                            if(dataSnapshot.exists())
                             // do what you want
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }
                  )};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...