首页 > Java > java教程 > 如何可靠地检查 Firebase 实时数据库中的用户名是否存在?

如何可靠地检查 Firebase 实时数据库中的用户名是否存在?

Barbara Streisand
发布: 2024-12-12 11:13:10
原创
446 人浏览过

How to Reliably Check for Username Existence in Firebase Realtime Database?

如何检查 Firebase 数据库中的值是否存在

在使用 Firebase 实时数据库进行 Android 开发时,确保用户的唯一性至关重要注册新帐户时的详细信息。因此,在允许用户创建之前验证特定用户名是否已存在非常重要。

问题陈述

最初使用自定义方法 usernameExists() 来检查用户名的存在。但是,它始终返回 true,阻碍了准确的验证过程。

解决方案

Firebase 中的 getReference() 方法

的 getReference() 方法FirebaseDatabase 返回一个 DatabaseReference 对象。

Null 处理getReference()

与 getReference() 如果指定路径不存在则返回 null 的假设相反,它实际上创建一个 DatabaseReference 对象,无论路径是否存在。因此,使用 (fdbRefer != null) 作为用户名存在的条件是不正确的。

检查值存在的正确方法

要验证值是否存在,可以使用 ValueEventListener。方法如下:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference userNameRef = rootRef.child("Users").child("Nick123");
ValueEventListener eventListener = new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {
    if (!dataSnapshot.exists()) {
      // Create a new user with the specified username.
    }
  }

  @Override
  public void onCancelled(DatabaseError databaseError) {
    Log.d(TAG, databaseError.getMessage()); // Handle errors appropriately.
  }
};
userNameRef.addListenerForSingleValueEvent(eventListener);
登录后复制

这种方法允许您检查特定路径是否存在并相应地处理结果。或者,您可以使用查询来执行相同的检查:

Query query = rootRef.child("Users").orderByChild("userName").equalTo("Nick123");
query.addValueEventListener(/* ... */);
登录后复制

请注意,还有其他可用方法,例如创建单独的“userNames”节点来保存唯一的用户名或使用像用户的 UID。然而,推荐的解决方案是利用上面概述的 ValueEventListener 方法。

以上是如何可靠地检查 Firebase 实时数据库中的用户名是否存在?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板