首页 > 解决方案 > 从 Firebase 数据中检查和比较应用中的特定数据

问题描述

我正在制作一个应用程序来将用户数据存储到 Firebase 实时数据库中。我已成功在 firebase 数据库中保存和检索数据。现在假设用户已经将他的名字存储在数据库中。然后我想检查名称是否存在。

如果它存在,那么该名称是否与存储在我的应用程序中的字符串中的名称相同?

任何的想法?这该怎么做。

用于保存用户名的代码

databaseReference.child("users").child(uniqueID).setValue(name);

有没有办法从数据库中获取这个特定的值?有什么类似的getValue()东西吗?

以下是我的应用程序的屏幕截图:- 应用截图

这是我的应用程序的顺序:-首先用户将注册,然后登录。当用户第一次登录时,我们会要求他设置一个 4 位密码,该密码将存储在 firebase 数据库中。

以上是firebase截图:- Firebase 截图

这就是我存储密码的方式。现在,当用户单击“SET”时,我们会将输入的密码保存到数据库并将用户重定向到 mainActivity。但是当用户重新打开我们的应用程序时,我们将检查我们的数据库中是否存储了该特定用户的密码。如果密码被存储,那么我们将直接将他发送到密码验证活动,用户将输入密码,我们必须检查密码输入和用户输入的密码是否相同。但是如果数据库中没有密码,那么我们将再次打开此设置密码活动并要求他设置密码。

标签: androidfirebasefirebase-realtime-database

解决方案


是的,您可以使用orderByChild()查询equalTo()来检查用户的数据是否存在于数据库中。

此代码不仅检查密码是否存在,而且检查密码是否正确。

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("password").child("passcodes");
                    ref.orderByChild("passcode").equalTo(passCodeYouHave).addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            if(dataSnapshot.exists())
                              // passcode is present, and is correct
                            else
                                // incorrect passcode or no passcode

                        }

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

                        }
                    });

passCodeYouHave是您在应用程序中拥有的用户的密码,如果该名称存在于名为passcode.

此代码不会检查正确的密码,它只会检查是否有密码。

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("password").child("passcodes");
                    ref.orderByChild("passcode").addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            if(dataSnapshot.exists())
                              // passcode is present, so go to activity for checking the passcode
                            else
                                // no passcode is present so go for activity to set up new passcode

                        }

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

                        }
                    });

推荐阅读