我需要得到我的firebase数据库的最后一个孩子

时间:2017-04-22 08:41:15

标签: android firebase firebase-realtime-database

我想从我的firebase数据结构中获取最后一个孩子,其中我只知道它的接收和第一个孩子的参考 enter image description here

我试试这个,但它会返回所有的孩子,但我只需要在查询limiTolast(1)中使用的最后一个

Thread

5 个答案:

答案 0 :(得分:2)

您可以使用带有'limitToLast'方法的查询,该方法从最后一个开始返回指定数量的项目。

Query query=datasnapshot.child("childname").orderByKey().limitTolast(1);

答案 1 :(得分:1)

如果您知道父节点(received/GTjrWgpKjoeXUt4JdBJTYP1JkVT2/fnBOM...)的完整路径,则只能使用limitToLast(1)获取该位置下的最后一个子节点:

DatabaseReference ref = users.child("GTjrWgpKjoeXUt4JdBJTYP1JkVT2/fnBOM...`");
ref.orderByKey().limitToLast(1).addChildEventListener(...

如果您不知道父节点的完整路径,则无法检索子节点的子集。

答案 2 :(得分:1)

这是从firebase找到最后一个退出子项的最佳解决方案

  

String LASTMESSAGE=NULL; DatabaseReference dbref = Firebase.getInstance().getReference(); Query lastchield = FirebaseDatabase.child("yourchieldfororder") .orderByKey().limitToLast(1); lastchield.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot ds) { LASTMESSAGE= ds.child("message").getValue().toString(); } @Override public void onCancelled(DatabaseError databaseError) { LASTMESSAGE = "No-Last-MESSAGE-EXIT"; } });

首先查询子ID,然后在数据快照中为您提供子项的最后一个ID。

快乐的编码!

答案 3 :(得分:0)

您的引用不正确您的receiver databaseReference应该指向fnBOM .....而不是“GTjrWgpKjoeXUt4JdBJTYP1JkVT2”

       final DatabaseReference receiver = 
       users.child("GTjrWgpKjoeXUt4JdBJTYP1JkVT2").child("fnBom...");

并且您可以将每个孩子存储在arraylist和访问最后一个元素    

的arraylist
        myArrayList.get(myArrayList.size()-1);

答案 4 :(得分:0)

最后我制定了获取最后一个节点的逻辑,即使我们不知道我们孩子的确切参考

解决方案

在我的场景中有三个父

  1. 收到(根节点)
  2. 用户GTjr .....(我只知道这一点的参考)
  3. 和第三个节点fnBom ...(实际上这个问题我需要得到这个数组的最后一个孩子)
  4. 所以我得到了(fnBom ..节点)的总ChilderenCount,在我的情况下它是5,现在我用于循环并将其与if条件匹配以获得最后点头

    if(loopCount==childrenCount){
    
     // here we can get the last child 
    
    }
    

    感谢你们所有人:)