gpt4 book ai didi

java - 查询 firebase 数据库并从 2 个节点检索

转载 作者:行者123 更新时间:2023-11-30 00:23:02 26 4
gpt4 key购买 nike

我想从 firebase 数据库中检索,并且我已经设置了我的模型来放置内容。我成功地从一个节点检索数据,但我无法这样做,因为我需要来自 2 个节点的数据,我想在 Recycler View 中显示这些数据。然而,我获得成功的地方是完全不同的 fragment 。

首先,我将向您展示我的代码,该代码仅从一个节点检索数据并且对我有用。

这是为不同 fragment 中的一个节点工作的代码。

工作 fragment

    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();
}

以上代码完美运行。现在 Non-Working Code 不会提取任何内容。

    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 数据库的快照 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。

关于java - 查询 firebase 数据库并从 2 个节点检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45921182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com