繁体   English   中英

Firebase Android 数据库查询(读取数据)

[英]Firebase Android Database Query (Read Data)

我正在尝试从 firebase 数据库中获取数据,其中 valueNum 是 +91 的联系人号码。 我在随附的屏幕截图中显示了相同的内容,但是当我运行代码时。 它给了我一个包含不同 valueNum 的所有用户的列表。 但是,如果我传递了不正确的值,给我同样的结果,即没有错误。 数据库屏幕截图

private void funcDatabaseActivity(String valueNum) {
    databaseReference.child("users").child("registered-user/" + valueNum).addChildEventListener
            (new ChildEventListener() {
                @Override
                public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                    if (dataSnapshot.exists()) {
                        UserData data = dataSnapshot.getValue(UserData.class);
                        Toast.makeText(ContactsActivity.this, "Data Exists - " + data.getDisplayName(), Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(ContactsActivity.this, "Data Not Exists", Toast.LENGTH_SHORT).show();
                    }
                }

                @Override
                public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

                }

                @Override
                public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

                }

                @Override
                public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
}

如数据库的屏幕截图所示,您执行的序列不正确。 我在答案中为你修改了这个。

您必须采用逻辑路径来访问特定信息。 此外,您还可以阅读有关ChildEventListener 、它的用途以及它与addValueEventListener之间的区别。

  private void funcDatabaseActivity(String valueNum) {
        databaseReference= FirebaseDatabase.getInstance().getReference("database-find-me");

        databaseReference.child("users").child("registered-user").child(valueNum).addValueEventListener(new ValueEventListener() {
            @SuppressLint("SetTextI18n")
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {  

             //Type here as you like

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Toast.makeText(this, "check your internet", Toast.LENGTH_SHORT).show();
            }
        });
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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