我创建的Firebase数据如下:
我需要获取第二个对象的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);
}
答案 0 :(得分:5)
以下是解决方案:
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);
然后只使用"帖子"用于数据库参考。
使用查询:
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) {
}
});