2017-02-23 79 views
1

我在android中使用Firebase構建我的第一個項目。從Firebase中的嵌套節點獲取數據

我有建立一個由具有Firebase's database主節點如後媒體用作特定交其子節點,節點介質可以包含多個值,或者可以具有在其內部的一個值。

所以我想要獲取媒體的子節點值與特定的發佈節點。

您能否幫我解決。

任何幫助將深表謝意。

請檢查以下屏幕截圖。

Database image

回答

0

嘗試是這樣的

FirebaseDatabase.getInstance().getReference("posts").child(UID).child("media");

其中UID是特定職位節點的關鍵。

PS:這會返回類似promise的東西,您需要爲其添加一個偵聽器。 (因爲這是實時)

1
Firebase ref = new Firebase(YOUR_FIREBASE_URL); 
      String postNode ="KddShng........"; 
      ref.child("posts/"+postNode).child("media").addChildEventListener(new ChildEventListener() { 
       @Override 
       public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
         Log.e("[email protected]@_Key : >",dataSnapshot.getKey()); // you will get key of Media node 
       } 

       @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(FirebaseError firebaseError) { 

       } 
      }); 
+0

我想獲取帖子節點以及裏面,我想要媒體節點列表。 會這樣做嗎? –

+0

請展開該節點也..把新的形象爲它..所以我可以得到想法 –

1

首先,你需要閱讀docs知道如何從火力檢索數據。

您的信息就會是這個樣子......

final Firebase ref = new Firebase("URL/posts"); 
    ref.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot userSnapshot : dataSnapshot.getChildren()) { 
//u can handle your variables name in GetData class 
       GetData posts = userSnapshot.getValue(GetData.class); 

在另一種方式..

   DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("posts"); 
       String user_id = firebaseAuth.getCurrentUser().getUid(); 
       databaseReference.child(user_id).child("media").getValue("user_id").getValue(etc); 

你可能最後一行保存爲String在任何地方重用。

UPDATE:

而惠譽的數據,您必須使用火力地堡adapterexample

+0

我需要發佈數據和媒體子節點數據的特定帖子在單個getset數組。如何實現該功能? –

+0

你可以給我發送github鏈接爲相同或任何工作的例子? –

+1

請檢查更新。 – Ibrahim

0

如果只是想一次擷取值,你可以這樣做。

FirebaseDatabase.getInstance().getReference("posts").child("your_post_item_id").child("media").addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

       for (DataSnapshot children : dataSnapshot.getChildren()) { 
        YourMediaModel mediaItem = children.getValue(YourMediaModel.class); 
        //add you mediaItem to list that you provided 
       } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     }