查询Firebase数据库并从2个节点中检索
问题描述:
我想从Firebase数据库中检索,并且我已经设置了我的模型来放置内容。我成功地从单个节点检索数据,但是我无法这样做,因为我需要来自2个节点的数据,我想在Recycler View中显示它。但是,我获得成功的地方是完全不同的片段。查询Firebase数据库并从2个节点中检索
首先,我将向您展示我的代码,用于从一个节点检索数据,它正在为我工作。
下面是在不同片段中的一个节点工作的代码。
工作片段
private void updateArrayList() {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
Query query = reference
.child(getString(R.string.dbname_posts))
.child(FirebaseAuth.getInstance().getCurrentUser().getUid());
query.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
data.add(dataSnapshot.getValue(Userpost.class));
adapter.notifyDataSetChanged();
}
上面的代码完美的作品。 现在非工作代码不拉什么东西。
private void updateArrayList() {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
Query query = reference
.child(getString(R.string.dbname_posts)).child("profile_photo")
.child(getString(R.string.dbname_user_account_settings))
.child("profile_photo");
query.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
data.add(dataSnapshot.getValue(Userpost.class));
adapter.notifyDataSetChanged();
}
这是火力数据库 Firebase Database Snapshot
快照我做了尽可能清晰的在我结束的问题。 谢谢大家提前。
答
要想从一个特定岗位的价值,请使用如下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference postIdRef = rootRef.child("posts").child(postId);
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String pheading = dataSnapshot.child("pheading").getValue(String.class);
String user_id = dataSnapshot.child("user_id").getValue(String.class);
Log.d("TAG", pheading + "/" + user_id);
DatabaseReference ref = rootRef.child("user_account_settings").child(user_id);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot ds) {
String profile_photo = ds.child("profile_photo").getValue(String.class);
Log.d("TAG", profile_photo);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
ref.addListenerForSingleValueEvent(valueEventListener);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
postIdRef.addListenerForSingleValueEvent(eventListener);
在这postId
是要从中提取数据的帖子的ID。
谢谢,正如我所提到的,我还想从另一个节点“user_account_settings”上的“posts”节点下的(user_id)子节点同时检索数据。请看看我在问题中添加的屏幕截图。 PS。感谢您的帮助我 – esarje
请看我更新的答案。 –