【问题标题】:How to get the key of parent node in Realtime Firebase Database如何在实时 Firebase 数据库中获取父节点的密钥
【发布时间】:2018-01-23 12:43:19
【问题描述】:

将数据推送到其中时,RealTime Firebase 数据库以 JSON 格式构建。因此,如果 JSONObject 在 RealTime Database 中有另一个 JSONObject,那么如何获取该 JSONObject 的“key”名称。

下图是 Firebase 实时数据库的结构,我想从结构中获取键“January”和键“2018-01-23”,我该怎么做。

我通过传递“Neeraj”尝试了 Firebase 的侦听器,因为我知道它,但我无法获取 JSON 结构的下一个键名。

【问题讨论】:

  • 你尝试了什么?

标签: android json firebase-realtime-database


【解决方案1】:

假设 Neeraj 节点是您的 Firebase-root 的直接子节点,要获取该数据,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference dateRef = rootRef.child("Neeraj").child("January").child("2018-01-22");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String inStatus = dataSnapshot.child("inStatus").getValue(String.class);
        String inTime = dataSnapshot.child("inTime").getValue(String.class);
        String outSatus = dataSnapshot.child("outSatus").getValue(String.class);
        String outTime = dataSnapshot.child("outTime").getValue(String.class);
        Log.d("TAG", "Neeraj" + " / " + dataSnapshot.getRef().getParent().getKey() + " / " + dataSnapshot.getKey());
        Log.d("TAG", inStatus + " / " + inTime + " / " + outSatus + " / " + outTime);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
dateRef.addListenerForSingleValueEvent(eventListener);

您的输出将是:

1 / 11:58:12 pm / 1 / 11:58:12 pm

【讨论】:

  • 请看我更新的答案。这是你想要的吗? Neeraj / January / 2018-01-22.
  • 您使用dataSnapshot.getRef().getParent().getKey()dataSnapshot.getKey() 作为最后两个。你试过我更新的答案吗?
  • 好的。随时通知我。
  • 谢谢它的工作..!!!。 DataSnapshot 会将我们带到树的最后一个子节点,从那里我将能够获得键值。但在这里我得到了 inStatus、inTime、outSatus 和 outTime 的空值。不用担心,我会弄清楚的。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2020-05-12
  • 2020-09-03
  • 2020-04-27
  • 2019-10-11
  • 1970-01-01
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多