gpt4 book ai didi

java - Firebase 查询不显示所有数据

转载 作者:行者123 更新时间:2023-12-01 19:50:06 25 4
gpt4 key购买 nike

我需要获取确定年龄范围的所有用户,但我的代码不起作用。

我的 Firebase 数据库结构是这样的。

-user
-1
-name:"James"
-age:"21"

-2
-name:"Artur"
-age:"25"

-3
-name:"Charlotte"
-age:"25"

-3
-name:"Marvin"
-age:"80"

我的代码是这样的。这样我只捕获了 1 个用户。

DatabaseReference uRef = database.getReference("users");

Query UserQuery = uRef.orderByChild("age").startAt(21).endAt(50);

UserQuery.limitToFirst(10).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

int counter =(int) dataSnapshot.getChildrenCount();

Log.d("TAG////////", String.valueOf(counter));




}


@Override
public void onCancelled(DatabaseError databaseError) {

}
});

但是如果我删除 endAt() 条件,我会捕获 21 之后的所有用户,并且我只想捕获该范围内的用户。

DatabaseReference uRef = database.getReference("users");

Query UserQuery = uRef.orderByChild("age").startAt(21); //I deleted endAt(50);

UserQuery.limitToFirst(10).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

int counter =(int) dataSnapshot.getChildrenCount();

Log.d("TAG////////", String.valueOf(counter));




}


@Override
public void onCancelled(DatabaseError databaseError) {

}
});

请帮助我。

最佳答案

看起来您将年龄存储为字符串值,因此您还应该将字符串传递到查询中:

Query UserQuery = uRef.orderByChild("age").startAt("21").endAt("50");
<小时/>

请注意,当您想要获取 2 岁到 5 岁之间的每个人时,这会导致问题,因为在字典排序中,它看起来像:

"18"
"19"
"2"
"20"
"21"
"22"
...
"29"
"3"
"30"
"31"
...

因此,您可能希望通过将年龄存储为实际数值而不是将其存储为字符串来解决此问题。

关于java - Firebase 查询不显示所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51605049/

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