java - 如何检查firebase数据库中是否存在值

标签 java android

我有这个数据库:

enter image description here

我想查明电子邮件(数据库中的值)是否已存在。因此,我必须迭代“email”的每个子级,并检查该值是否等于字符串 inputMail。

我尝试了以下代码,但它不起作用,有人可以帮助我吗?谢谢你

final String input_mail = et_email.getText().toString();

            DatabaseReference email = FirebaseDatabase.getInstance().getReference().child("email");

            email.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    for (DataSnapshot ds : dataSnapshot.getChildren()) {
                        String emailVal = ds.getValue(String.class);
                        if (emailVal.equals(input_mail)) {

                           //Toast exists
                        }


                        else {

                            //Toast not exists
                        }
                    }
                }

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

                }
            });

总之,如果我输入 person1@m.de,它应该会提示它存在

最佳答案

这是一个非常简单的方法。让你的电子邮件像 child 一样。您必须替换电子邮件中的点并将其设置为子项。 (您不能直接使用电子邮件发送给 child )

static String encodeUserEmail(String userEmail) {
    return userEmail.replace(".", ",");
}

static String decodeUserEmail(String userEmail) {
    return userEmail.replace(",", ".");
}

然后你可以像这样轻松匹配:

            final String input_mail = et_email.getText().toString();

            DatabaseReference email = FirebaseDatabase.getInstance().getReference().child("email");

            email.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                      if(datasnapshot.child(input_mail).exits){
                          //Toast exists
                       }else {
                           //Toast not exists
                       }

                    }
                }

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

                }
            });

关于java - 如何检查firebase数据库中是否存在值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58673887/

相关文章:

java - 正则表达式中的通配符仅在停用词之前是贪婪的

使用由单个安装程序安装的 SQLite 的 Java 桌面应用程序

java - 无法获取在上下文菜单中单击的 ListView 位置

android - react-native-maps 获取当前位置

android - 将 Android 应用程序转移到另一个开发者帐户,是否会保留所有评分和评论 + 统计信息?

java - Lunar Lander 中的 Android 垃圾收集

java - 使用 JMS 连接到大型机

android - 录制使预览和比率变暗

java - Android TextView中的阿拉伯日期显示

java - 无法使用 'Scanner' 和 '.next().charAt(0)' 正确读取字符