I am trying to find the uid from firebase. Let's say I have 3 users in my database, and I want to find the 3rd user uid.
Here is json formate witch is just export from firebase:
{
"-KVKrXu70Ziw0iRw46l5" : {
"age" : 20,
"emailId" : "ameerhamza",
"name" : "hamza"
},
"-KVKrkVy5OojpsSUEI24" : {
"age" : 20,
"emailId" : "ameerhamza",
"name" : "hamza"
},
"-KVKrkzXy9duyiZq5bM0" : {
"age" : 21,
"emailId" : "ameerhamzaaaa",
"name" : "hamza"
},
"-KVKrl5Ax7ptodMYywzg" : {
"age" : 22,
"emailId" : "ameerhamza",
"name" : "hamza"
},
"-KVKrr7E6b4-3x6tuwOX" : {
"age" : 23,
"emailId" : "ameerhamza",
"name" : "hamza"
},
"-KVKruES01regClm6tWW" : {
"age" : 24,
"emailId" : "ameerhamza",
"name" : "hamza"
}
}
Here is code what I done. But it is not working for me.
final FirebaseDatabase database = FirebaseDatabase.getInstance();
myRef = database.getReference();
DatabaseReference newRef = myRef.push();
i++;
Student s = new Student("ameerhamza",i,"hamza");
newRef.child(newRef.getKey()).setValue(s);
final Query queryRef = myRef.orderByChild("emailId").equalTo("ameerhamzaaaa");
queryRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.d("Firebase UID ",dataSnapshot.getKey());//it always null
Student s = dataSnapshot.getValue(Student.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
You're creating an extra child and you're searching within the parent. Try something like this:
final FirebaseDatabase database = FirebaseDatabase.getInstance();
myRef = database.getReference();
DatabaseReference newRef = myRef.push();
i++;
Student s = new Student("ameerhamza",i,"hamza");
newRef.setValue(s);
myRef
.orderByChild("emailId")
.equalTo("ameerhamzaaaa")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Map<String, Student> data = dataSnapshot.getValue(new GenericTypeIndicator<Map<String, Student>>() {});
Map.Entry<String, Student> entry = data.entrySet().iterator().next();
String uid = entry.getKey();
Student s = entry.getValue();
Log.d("Firebase UID ", uid);
}
@Override
public void onCancelled(DatabaseError databaseError) {
// handle error
}
});
It probably doesn't give you the exact id but should give you a better understanding of what's happening.
All Right fox after so much hard work, finaly i get my ANS , Here is how i get the UID from firebase , i use the Firebase Recyler Adapter to get Data From firebase and next you see your self what i done
adapter = new FirebaseRecyclerAdapter<Student, myViewHolader>(
Student.class,R.layout.item_row,myViewHolader.class,myRef
) {
@Override
protected void populateViewHolder(myViewHolader viewHolder, Student model, int position) {
Log.e("myFirebase UID",adapter.getRef(position).getKey());
}
};
recyclerView.setAdapter(adapter);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.