Java Android如何让firebase数据库中的加载数据与orderByChild()结合使用&;startAt()&;limitToFirst()?
我想对Firebase RealTimeDatabase中的数据进行排序。我试图做的是,当我首先加载数据时,它将从我放入的子值开始,如“7”,然后它将根据子“NUMBER”值按升序对数据库进行排序,并限制第一(2)个数据。但是日志总是显示dataSnapshot不存在 这是我的密码 加载数据的代码 }Java Android如何让firebase数据库中的加载数据与orderByChild()结合使用&;startAt()&;limitToFirst()?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我想对Firebase RealTimeDatabase中的数据进行排序。我试图做的是,当我首先加载数据时,它将从我放入的子值开始,如“7”,然后它将根据子“NUMBER”值按升序对数据库进行排序,并限制第一(2)个数据。但是日志总是显示dataSnapshot不存在 这是我的密码 加载数据的代码 } 我期望从日志中看到的是“7”和“8”,但它总是显示dataSnapshot不存在。有人能告诉我我在这里做错了什么吗?我已经试着寻找其他一些类似的问题,但找不到任何解决办法 试试这个,我通过短接来获
我期望从日志中看到的是“7”和“8”,但它总是显示dataSnapshot不存在。有人能告诉我我在这里做错了什么吗?我已经试着寻找其他一些类似的问题,但找不到任何解决办法 试试这个,我通过短接来获取数据:
mChatReference = FirebaseDatabase.getInstance().getReference(VTEST)
.child("user id");
Query query = mChatReference.orderByChild("NUMBER");
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
yourList.add(snapshot.child("NUMBER").getValue());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
您通过以下方式进行筛选:
databaseReference.child("VTEST").orderByChild("NUMBER").startAt("7")
您正在存储:
"NUMBER" : 7
如果你仔细看,你会发现一个是字符串,另一个是整数。在Firebase实时数据库中,不同类型的值永远不相等
要解决此问题,请按数值进行筛选:
databaseReference.child("VTEST").orderByChild("NUMBER").startAt(7)
您能用实际的JSON替换数据结构吗(作为文本,没有屏幕截图)?您可以通过单击溢出菜单中的“导出JSON”链接来实现这一点(⠇) 我已经用JSON更新了我的数据结构already@GAMETTXD你为什么说你没有得到数据?你如何/在哪里验证它?我正在更新我的答案@FrankvanPuffelen你救了我的命,它很有魅力。非常感谢。
"NUMBER" : 7
databaseReference.child("VTEST").orderByChild("NUMBER").startAt(7)