我想从我的firebase数据结构中获取最后一个孩子,其中我只知道它的接收和第一个孩子的参考
我试试这个,但它会返回所有的孩子,但我只需要在查询limiTolast(1)中使用的最后一个
Thread
答案 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)
最后我制定了获取最后一个节点的逻辑,即使我们不知道我们孩子的确切参考
解决方案
在我的场景中有三个父
所以我得到了(fnBom ..节点)的总ChilderenCount,在我的情况下它是5,现在我用于循环并将其与if条件匹配以获得最后点头
if(loopCount==childrenCount){
// here we can get the last child
}
感谢你们所有人:)