仅从firebase实时数据库中检索特定密钥


ref.child(eid).addValueEventListener(object: ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
if(snapshot.exists()){
val user = snapshot.getValue(UserModel::class.java)
}
}
})

目前,我在上面使用的代码检索eid子项的所有密钥。如何仅从eid子项中检索特定密钥?

eid子级的数据太多。我不需要所有的钥匙。

感谢

唯一的方法是过滤数据,您可以使用limitToFirst(),它将从列表的开头返回有限数量的节点,甚至可以使用limitToLast(),从列表的末尾检索有限数量的结点。

例如:

ref.child(eid).limitToFirst(10).addValueEventListener(object: ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
if(snapshot.exists()){
val user = snapshot.getValue(UserModel::class.java)
}
}
})

或者,如果您想检索特定值,则可以使用equalTo():

ref.child(eid).orderByChild("name").equalTo("Peter").addValueEventListener(object: ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
if(snapshot.exists()){
val user = snapshot.getValue(UserModel::class.java)
}
}
})

如果您有以下数据库,上述查询将起作用:

eid
random_id
name: Peter

查看以下文档了解更多信息:

https://firebase.google.com/docs/database/android/lists-of-data#filtering_data

最新更新