繁体   English   中英

Firebase 实时数据库 datasnapshot.hasChild

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM