【问题标题】:How to get children data from 4 layer of parent nodes firebase using android studio如何使用android studio从4层父节点firebase获取子数据
【发布时间】:2021-03-24 02:43:44
【问题描述】:

这就是我的数据库的样子,我想获取每个字母表的 datepercent 数据。有人知道如何获取数据或创建一个表格来存储每个字母表的日期和百分比,并进行 10 次以上的试验吗?

这就是我的意思.. 我想要每次试验中A 的所有数据。

【问题讨论】:

  • 有两种方法,您需要混合使用:1) 如果您知道孩子的姓名,您可以使用snapshot.child("that name") 访问特定快照,2) 如果您不知道不知道子节点的名字,可以循环遍历snapshot.getChildren()。通过结合这些,您可以导航任何结构。也可以在这里查看我的答案:stackoverflow.com/questions/66409491/…
  • 问题是我想从每次试验中获取所有数据。例如,我需要来自每个 n 试验的数据 A。你知道怎么做吗?
  • 当您在数据库中的某个位置获取数据时,您还会检索其所有子节点
  • 嘿努鲁尔。 “我需要来自每个 n 试验的数据 A”是什么意思?请提供一个具有预期结果的具体示例。请回复@AlexMamo
  • @AlexMamo 我已经编辑了我的帖子,希望你能理解

标签: java android firebase firebase-realtime-database


【解决方案1】:

根据您编辑的问题:

我想要 A 每次试验的所有数据。

要获取A节点下存在的所有数据,对应每条轨迹,请使用以下代码行:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("Result").child(uid);
uidRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DataSnapshot> task) {
        if (task.isSuccessful()) {
            for (DataSnapshot trialSnapshot : task.getResult().getChildren()) {
                for (DataSnapshot ds : trialSnapshot.getChildren()) {
                    if(ds.getKey().equals("A")) {
                        String date = ds.child("Date").getValue(String.class);
                        String percent = ds.child("Percent").getValue(String.class);
                        Log.d(TAG, date + " - " + percent);
                    }
                }
            }
        } else {
            Log.d(TAG, task.getException().getMessage()); //Don't ignore potential errors!
        }
    }
});

如您所见,您需要循环两次,使用“getChildren()”。 logcat 中的结果将是:

9/2/12 - 32
2/3/21 - 89

【讨论】:

  • 非常感谢 :))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-03
  • 1970-01-01
  • 2019-09-28
  • 2019-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多