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