Проверить, если данные уже существуют в FireBase - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь найти, существуют ли данные в базе данных. Однако это не входит в l oop. Это всегда go to else

Это моя часть проверки, она всегда переходит к остальной части, полный код находится в pastebin

private void validate(final String Song) {
    final DatabaseReference RootRef;
    RootRef = FirebaseDatabase.getInstance().getReference();
    RootRef.addListenerForSingleValueEvent(new ValueEventListener()
    {
        public void onDataChange(DataSnapshot dataSnapshot)
        {
            if (!(dataSnapshot.child("Participants").child(Song).exists()))
            {
                HashMap<String, Object> userdataMap = new HashMap<>();
                userdataMap.put("song", Song);
                RootRef.child("Participants").child(Song).updateChildren(userdataMap).addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task)
                    {
                        if (task.isSuccessful())
                        {
                            Toast.makeText(Register.this, "This song already exists.", Toast.LENGTH_SHORT).show();

                        }
                    }
                });
            }

            else    {
                Toast.makeText(Register.this, "Your have choosed your song", Toast.LENGTH_SHORT).show();

               // Toast.makeText(Register.this, "Please try again.", Toast.LENGTH_SHORT).show();

            }}
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

1 Ответ

0 голосов
/ 01 мая 2020
RootRef = FirebaseDatabase.getInstance().getReference().child("Participants").child(Song);
RootRef.addListenerForSingleValueEvent(new ValueEventListener()
{
    public void onDataChange(DataSnapshot dataSnapshot)
    {
        if (dataSnapshot.exists())
        {
           Toast.makeText(Register.this, "This song already exists.", Toast.LENGTH_SHORT).show();              
        }
        else    {
            HashMap<String, Object> userdataMap = new HashMap<>();
            userdataMap.put("song", Song);
            RootRef.setValue(userdataMap).addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task)
                {
                    if (task.isSuccessful())
                    {
                        Toast.makeText(Register.this, "This song successfully added", Toast.LENGTH_SHORT).show();

                    }
                }
            });

        }}
    public void onCancelled(DatabaseError databaseError) {

    }
});

Если вы хотите проверить, существует ли песня, вы можете указать ее в качестве справочной. Если datasnapshot существует, то в вашей базе данных есть песня. Если нет, вы можете добавить песню в базу данных.

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