gpt4 book ai didi

android - 对 Firebase startAt() 感到困惑

转载 作者:太空宇宙 更新时间:2023-11-03 10:39:16 24 4
gpt4 key购买 nike

我正在尝试使用 firebase 制作 android 应用程序,我想使用 startAt() 在 firebase 上使用搜索功能。但是结果让我很困惑。

我有一些像这样的 Firebase 数据。

{
"siswa" : {
"100" : {
"id" : 100,
"nama" : "Sucipto"
},
"101" : {
"id" : 101,
"nama" : "Tomo"
},
"102" : {
"id" : 102,
"nama" : "Fitri"
},
"103" : {
"id" : 103,
"nama" : "Sumini"
},
"104" : {
"id" : 104,
"nama" : "Eko"
},
"106" : {
"id" : 106,
"nama" : "Sulastri"
}
}
}

我的示例查询

// Setup Firebase
final FirebaseDatabase database = FirebaseDatabase.getInstance();
// Firebase siswa ref
final DatabaseReference siswaRef = database.getReference("siswa");
// Query
Query suciptoQuery = siswaRef.orderByChild("nama").startAt("Sucipto");

结果:

 D/Query Sucipto: Nama : Sucipto
D/Query Sucipto: Nama : Sulastri
D/Query Sucipto: Nama : Sumini
D/Query Sucipto: Nama : Tomo

我正在尝试另一个测试查询

Query suciptoQuery = siswaRef.orderByChild("nama").startAt("Su");

结果:同上

另一个查询:

Query suciptoQuery = siswaRef.orderByChild("nama").startAt("Tomo");

Query suciptoQuery = siswaRef.orderByChild("nama").startAt("To");

结果:

D/Query Sucipto: Nama : Tomo

我在 SO 上搜索这个主题,但仍然没有任何解决方案。

最佳答案

我检查了 startAt()文档,它的逻辑很困惑。但如果我确实理解正确(是的,不完全确定,但会提前发布,它可能会有所帮助)。

在您的第一次尝试中,起始值Sucipto,我认为这表明后续的单词/字符串是按词典顺序排列更大,都包含在内。正如您在结果中看到的,在引用中的其他 child 中,EkoFitri 未返回,因为按字母顺序,“S”远在“F”和“E”之后。

您可以尝试添加另一个值来验证这一点,假设包含“Sucipta”。如果您再次运行查询,其中 startAt() 的值为“Sucipto”,返回值仍将不包括“Sucipta”,因为“Sucipta”的最后一个字母更高(或字母顺序第一个(a ,b,c....) 抱歉,我找不到合适的术语)。

我认为这可能有帮助,您可以查看 Firebase Retrieving Data文档以获得更详细的描述。在一个示例中,他们还使用了字母而不是数字。

关于android - 对 Firebase startAt() 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37312093/

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