Firebase Android:哪一个是查询选定节点的更好方法



我正在 Firebase Android 中开发一个聊天基础应用程序。我有 2 种方法可以获得相同的结果,但无法检测到哪一种性能更好。需要以下帮助。

数据库结构:

Firebase - 
    - User
          - user id
                - name
                - DOB
                - userId

我需要获取所选密钥的用户信息。因此,有两种方法如下:

  1. 创建 Firebase 数据库引用,直到用户 ID,并向其添加事件侦听器:

    database.child("Users").child(userCurrent.getUserId()).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });
    
  2. 创建一个 Firebase 数据库引用,直到"用户"节点,然后尝试使用对键equalTo查询来查找确切的用户:

    database.child("Users").orderByKey().equalTo(userCurrent.getUserId()).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                }
                @Override
                public void onCancelled(DatabaseError databaseError) {
                }
            });
    

第二个选项是否会从节点获取每个用户User然后查询equalTo

无需

查询是否可以创建对用户对象的精确引用。在这种情况下,查询是完全不必要的,当然性能会更差。

第二个选项不会获取 Users 节点上的每个用户,它只会执行查询并返回您要查找的用户。

此外,如果您不想侦听节点上的每个更改,我建议您使用 addListenerForSingleValueEvent() ,它只会读取一次值。

最新更新