gpt4 book ai didi

java - Android 如何让从 firebase 数据库加载数据与 orderByChild() & startAt() & limitToFirst() 结合?

转载 作者:行者123 更新时间:2023-12-02 10:00:20 26 4
gpt4 key购买 nike

我想对 Firebase RealTimeDatabase 中的数据进行排序。我想做的是,当我首先加载数据时,它将从我放入的子值(如“7”)开始,然后它将根据子“NUMBER”值按升序对数据库进行排序,并 limitToFirst( 2)数据。但日志始终显示dataSnapshot不存在。

这是我的代码

Code for loading data

private void testData(){
final ArrayList<FirebaseDatabaseGetSet> testArrayList;
testArrayList = new ArrayList<>();
databaseReference = firebaseDatabase.getReference();
databaseReference.child("VTEST").orderByChild("NUMBER").startAt("7").limitToFirst(2).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){

Log.d("MOSTPOPCURRENTLASTNODE", "LOAINGMOREDATA");
for (DataSnapshot DS:dataSnapshot.getChildren()){
FirebaseDatabaseGetSet getSet = DS.getValue(FirebaseDatabaseGetSet.class);
testArrayList.add(getSet);
}
Log.d("MOSTPOPCURRENTLASTNODE", String.valueOf(testArrayList.get(0).getNUMBER()));
Log.d("MOSTPOPCURRENTLASTNODE", String.valueOf(testArrayList.get(1).getNUMBER()));

}else {
Log.d("MOSTPOPCURRENTLASTNODE", "NOLOAINGMOREDATA");
}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});
}

这是我的 Firebase 数据结构

Data Structure

"VTEST" : {
"A" : {
"NUMBER" : 5
},
"B" : {
"NUMBER" : 3
},
"C" : {
"NUMBER" : 7
},
"D" : {
"NUMBER" : 10
},
"E" : {
"NUMBER" : 12
},
"F" : {
"NUMBER" : 8
}

}

我从日志中期望的是“7”和“8”,但它总是显示 dataSnapshot 不存在。有人可以告诉我我在这里做错了什么,我已经尝试寻找其他一些类似的问题,但找不到任何解决方案。

最佳答案

您的过滤条件:

databaseReference.child("VTEST").orderByChild("NUMBER").startAt("7")

您正在存储:

"NUMBER" : 7

如果你仔细看,你会发现一个是字符串,另一个是整数。在 Firebase 实时数据库中,不同类型的值永远不会相等。

要解决此问题,请按数值过滤:

databaseReference.child("VTEST").orderByChild("NUMBER").startAt(7)

关于java - Android 如何让从 firebase 数据库加载数据与 orderByChild() & startAt() & limitToFirst() 结合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55682313/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com