[英]Firebase Reatime Database datasnapshot.hasChild
在 Firebase 实时数据库中有数千个子节点(用户)。 如果我使用snapshot.hasChild(user1)
是一种有效的方式(我的意思是轻量级操作),还是有另一种方式?
我担心的是下载所有子节点的功能。
DataSnapshot
是某个位置或匹配某个查询的所有数据的快照。 如果您下载数千个节点以检查其中一个节点是否存在,那么您肯定是在浪费带宽。
您是否考虑过只加载child(user1)
的数据?
说你现在有这个:
myReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChild(user1)) {
...
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "Firebase:onCancelled", databaseError.toException());
}
};
您可以通过仅加载user1
子节点来获得相同的结果:
myReference.child(user1).addListenerForSingleValueEvent(new ValueEventListener() {
// 👆 only load the one node we care about
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) { // 👈 check if the snapshot exists
...
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "Firebase:onCancelled", databaseError.toException());
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.