如何检查 Firebase 数据库中的值是否存在
在使用 Firebase 实时数据库进行 Android 开发时,确保用户的唯一性至关重要注册新帐户时的详细信息。因此,在允许用户创建之前验证特定用户名是否已存在非常重要。
问题陈述
最初使用自定义方法 usernameExists() 来检查用户名的存在。但是,它始终返回 true,阻碍了准确的验证过程。
解决方案
的 getReference() 方法FirebaseDatabase 返回一个 DatabaseReference 对象。
与 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中文网其他相关文章!