Java Firebase数据库检索值,是否可能
我有以下代码:Java Firebase数据库检索值,是否可能,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我有以下代码: DatabaseReference mdatabase = FirebaseDatabase.getInstance().getReference("allmessages"); mdatabase.child(mAuth.getCurrentUser().getUid()).child(userID).child(uploadID).push().setValue("somevalue"); DatabaseReference mdatabase = Fire
DatabaseReference mdatabase = FirebaseDatabase.getInstance().getReference("allmessages");
mdatabase.child(mAuth.getCurrentUser().getUid()).child(userID).child(uploadID).push().setValue("somevalue");
DatabaseReference mdatabase = FirebaseDatabase.getInstance().getReference("allmessages");
mdatabase.child(mAuth.getCurrentUser().getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Loop through all files in Uploads DataBase
for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){
AllChatMessagesGet allChatMessagesGet = postSnapshot.getValue(AllChatMessagesGet.class);
然后在另一个类中,我有以下代码:
DatabaseReference mdatabase = FirebaseDatabase.getInstance().getReference("allmessages");
mdatabase.child(mAuth.getCurrentUser().getUid()).child(userID).child(uploadID).push().setValue("somevalue");
DatabaseReference mdatabase = FirebaseDatabase.getInstance().getReference("allmessages");
mdatabase.child(mAuth.getCurrentUser().getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Loop through all files in Uploads DataBase
for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){
AllChatMessagesGet allChatMessagesGet = postSnapshot.getValue(AllChatMessagesGet.class);
我是否可以获取mdatabase.child(mAuth.getCurrentUser().getUid()).child(userID).child(uploadID).push().setValue(“somevalue”)下的所有值代码>根据我上面使用的代码
因为它不能找回我的任何东西。我认为addValueEventListener
中的上述代码将遍历mAuth.getCurrentUser().getUid()
的所有子类,并检索“somevalue”
但事实并非如此。那么我如何检索“somevalue”。还有别的办法吗?因为代码是在不同的类中编写的,我不知道如何获取.Child(userID)
和.Child(uploadID)
,这对我来说是个问题
我是否可以检索mdatabase.child(mAuth.getCurrentUser().getUid())
的所有子级及其下面存在的一些child
的值
添加并实现一个ChildEventListener
,而不是ValueEventListener
。
您的“somevalue”应该在重写的onChildChanged
方法的DataSnapshot中。我已经写了一段代码,下面的代码中有它的一瞥。我所做的是从用户节点获取价值。我已经通过下面的代码收回了它的所有子项,您也可以尝试同样的方法,也许它会帮助您
mFirebaseUserReference = FirebaseDatabase.getInstance().getReference();
userReference = mFirebaseUserReference.child("Users");
childEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Log.d("Values",dataSnapshot+"");
HashMap temp = (HashMap) dataSnapshot.getValue();
if (temp!=null){
if (!temp.get("id").equals(FirebaseAuth.getInstance().getCurrentUser().getUid())){
SignInModel signInModel = new SignInModel();
signInModel.setPhotoUrl((String)temp.get("photoUrl"));
signInModel.setEmail((String)temp.get("email"));
signInModel.setName((String)temp.get("name"));
signInModel.setId((String)temp.get("id"));
arrayList.add(signInModel);
adapter.notifyDataSetChanged();
}
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
userReference.addChildEventListener(childEventListener);
希望能有所帮助。根据您的评论,要获得-LCzWNw0nlC3GKsnPH8B
节点下以-LD
开头的ID,请仅使用rootRef.child(“AllChatMessages”).child(uid)
,请使用以下代码:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("AllChatMessages").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
for(DataSnapshot dSnapshot : ds.getChildren()) {
for(DataSnapshot snap : dSnapshot.getChildren()) {
String key = snap.getKey();
Log.d("TAG", key);
}
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
uidRef.addListenerForSingleValueEvent(valueEventListener);
输出将是您正在查找的所有ID。请添加您的数据库结构并ID您想要获取的数据。我已添加了数据库结构的图像,您会问:“我是否可以检索mdatabase.child(mAuth.getCurrentUser().getUid())
的所有子级及其值(哪些值?)那就存在下面的某个孩子(哪个孩子?)吧。请指出您想要得到的确切值。好的,如果我不清楚,很抱歉。AllChatMessages的2个孩子是userUid。我想调用mdatabase.child(mAuth.getCurrentUser().getUid())
,并以某种方式获取以LD6开头的child的值。它等于mdatabase.child(mAuth.getCurrentUser().getUid()).child(userID).child(uploadID).push().setValue(“somevalue”)中的“somevalue”代码>有一种方法,但要更好地理解,“获取以LD6开头的孩子的价值”这是什么意思?通过调用<代码> Mabase.Cube(Muth.GeCurrutuServer)(Guuid())< /C> >,我想从所有IDS中删除一个列表。我从上面复制了我的代码,并尝试将它添加到NoSoCalchange和OnCythPoad中,既不工作,也返回LogHope中的NULL,也考虑接受和投票。