Проверьте URL в базе данных Firebase - PullRequest
0 голосов
/ 16 марта 2019

Я хочу добавить URL в базу данных firebase в разделе «избранное», но если его там еще нет. Как это проверить. Я просто новичок. Вот что я попробовал сейчас.

database

  databaseReference=mFirebaseDatabase.getReference("Users");              
  firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
            databaseReference.child(firebaseUser.getUid()).orderByChild("favourites").addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    for (DataSnapshot d : dataSnapshot.getChildren())
                        if (d.child("img_url").equals(uploadcurrent.getImageUrl()))
                        Toast.makeText(mcontext, "Already added", Toast.LENGTH_LONG).show();


                        else {
                            String key=databaseReference.push().getKey();
                            databaseReference.child(firebaseUser.getUid()).child("favourites").child(key).child("img_url").setValue(uploadcurrent.getImageUrl());

                            //do something if not exists

                    }
                }

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

                }


            });

        }
    });
}

1 Ответ

1 голос
/ 16 марта 2019

Вы можете проверить наличие URL-адреса непосредственно в запросе. Для этого, пожалуйста, измените следующие строки кода:

databaseReference=mFirebaseDatabase.getReference("Users");              
firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
databaseReference
    .child(firebaseUser.getUid())
    .orderByChild("favourites")
    .addListenerForSingleValueEvent(/* ... */);

до

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference favouritesRef = rootRef.child("Users").child(uid).child("favourites");
Query query = favouritesRef.orderByChild("img_url").equalTo(url):
query.addListenerForSingleValueEvent(/* ... */);

, в котором url - это строковое представление URL, который вы на самом деле ищете.

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