我正在使用 Firebase
在Android中构建我的第一个项目。
我已经构建了一个 Firebase's database
,其主节点为 post , media 作为其子节点,媒体节点可以包含特定帖子的多个值,或者可以在其中包含一个值。
所以我想用特定的post节点获取媒体子节点值。
你能帮我解决吗?
任何帮助都会深深感激。
请查看下面的屏幕截图。
答案 0 :(得分: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("!_@@_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) {
}
});
答案 1 :(得分:1)
首先,您需要阅读docs以了解如何从firebase中检索数据。
,您的数据将是这样的......
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
,以便在任何地方重复使用。
<强>更新强>
答案 2 :(得分:0)
尝试这样的事情
FirebaseDatabase.getInstance().getReference("posts").child(UID).child("media");
其中UID是特定帖子节点的关键。
PS:这会返回类似于promise的内容,您需要为其附加一个侦听器。 (因为这是实时的)
答案 3 :(得分: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) {
}