2016-08-26 4 views
1

私はこのように作成されたI Firebaseデータがあります。Firebaseでキーを動的に取得する方法は?

enter image description here

は、私は2番目のオブジェクトのIDを取得する必要があります。私はgetKey()メソッドを使用しようとしましたが、返された "Post" ..私は一意のIDを取得したいです。 は私が値を追加するには、このコードを使用します。ここでは

private DatabaseReference refposts; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 
    context = this; 
    refposts = FirebaseDatabase.getInstance().getReference("Posts"); 
    Posts posts = new Posts(); 
    posts.setTitle("Title2"); 
    posts.setDesc("Desc2ً"); 
    posts.setWriter("user-1"); 
    refposts.child("Post").push().setValue(posts); 
} 

答えて

4

は、ソリューションです:

  DatabaseReference ref = database.getReference("Posts/Post"); 

      // Attach a listener to read the data at our posts reference 
      ref.addListenerForSingleValueEvent(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 

        for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) { 
         Posts post = postSnapshot.getValue(Posts .class); 
         //postSnapshot.getKey(); THIS IS YOUR UNIQUE KEY 
        } 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 
       } 
      }); 

提案:

はいない:refposts.child("Post").push().setValue(posts);

ドゥさん:refposts.push().setValue(posts);

をとデータベース参照には "Posts"だけを使用します例。


クエリを使用するには:

DatabaseReference myRef= database.getReference("Posts/Post"); 
    Query query = myRef.orderByChild("title").equalTo("Title2"); 
       query.addListenerForSingleValueEvent(new ValueEventListener() { 
        @Override 
        public void onDataChange(DataSnapshot dataSnapshot) { 

        } 

        @Override 
        public void onCancelled(DatabaseError databaseError) { 

        } 
       }); 
+0

おかげでその作品を。しかし、私はtitle == "Title2"の特定のキーを取得するために必要なすべてのキーを取得したくありません。 –

+2

更新された回答を確認してください – MKJParekh

+1

ありがとうalot <3、 –

関連する問題