java - 如何从 Firebase (java) 中检索最后一个孩子?
问题描述
DatabaseReference lastRef = FirebaseDatabase.getInstance().getReference().child("Ranklist");
Query lastQuery = lastRef.orderByKey().limitToLast(1);
lastQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot data) {
newUser.Rank=Long.parseLong(data.getKey().toString())+1;
OrderConsoleMessages();
texts[0].setText("Last Rank is: "+newUser.Rank+" | UID: " + data.getValue());
}
@Override
public void onCancelled(DatabaseError databaseError) {
OrderConsoleMessages();
texts[0].setText(databaseError.toString());
}
});
我的问题是如何从“Ranklist”中检索最后一个孩子?我尝试了orderByKey
ByValue 但在我的情况下没有任何效果。我没有收到任何错误,我想我根本没有从这个查询中得到任何数据。
编辑:这是我从 data.getValue().toString ->>> {4=somekey4} 得到的
解决方案
您的代码工作正常。我测试了它。您对数据库的查询返回父节点“Ranklist”的最后一个子节点。让您DatabaseReference dbref
成为全球会员
dbRef = FirebaseDatabase.getInstance().getReference().child("Ranklist");
Query lastQuery = dbRef.orderByKey().limitToLast(1);
lastQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data : dataSnapshot.getChildren())
{
//if you call methods on dataSnapshot it gives you the required values
String s = data.getValue(); // then it has the value "somekey4"
String key = data.getKey(); // then it has the value "4:"
//as per your given snapshot of firebase database data
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}});
希望它有所帮助...
快乐编码:-)
推荐阅读
- logging - 记录通过 runas 启动的 robocopy 输出
- visual-studio-2017 - 在 Visual Studio2017 中加载动态生成的 XML 文件的最佳选择是什么
- html - 超过了 Django 最大递归深度。无限查看循环
- javascript - 使用 JS 将 REST 数据附加到矩阵网格
- java - 为什么这个 unban 命令总是给我 NullPointerException?
- riscv - 从零增加 AsIDBits
- javascript - 通过拖动水平滚动卡片列表
- amazon-cognito - 如何使用 Cognito 中 event.request.codeParameter 的值发送自定义电子邮件
- r - 如何根据另一列的值聚合两列的 R 数据框
- python - pygame中的瓷砖碰撞物理