2016-10-11 37 views
0

我跟着文檔,但無論如何,我無法弄清楚如何從單個節點返回所有對象。例如,我想從companies節點返回所有公司對象的列表。一旦我有了這個列表,我想把它們全部解析成JSON對象。這是我第一次使用NoSQL數據庫,所以我確信我錯過了一些小東西。如何從Firebase數據庫中的節點檢索所有對象?

目前我有:

DatabaseReference companiesRef = FirebaseDatabase.getInstance().getReference("12265"); 

    companiesRef.child("companies").addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      Log.d("Count ", dataSnapshot.getChildren().toString()); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

,但它只是返回nullvalue: DataSnapshot { key = companies, value = null }

這裏是我的數據庫:

回答

1

你創建你的參考是這樣的:

FirebaseDatabase.getInstance().getReference("12265"); 

這意味着,火力地堡着眼於數據庫的根,並從下有返回子12265 。它不會自動在樹中搜索具有匹配名稱的節點。

所以你需要指定整個路徑:

FirebaseDatabase.getInstance().getReference("android/users/12265"); 
0

任何參數不添加到您的getReference()(讓它去數據庫的根),然後設置addListenerForSingleValueEvent。你還沒有在你的datasnapshot上使用getvalue()。試試這個代碼:

DatabaseReference companiesRef = FirebaseDatabase.getInstance().getReference(); 

// this is the patch that I see from the image that you have attached. 
companiesRef.child("telenotes").child("android").child("user").child("12265").child("companies").addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 

     Log.d("Count ", dataSnapshot.getChildren().getValue().toString()); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
}); 
相關問題