android - 从 Firebase 数据中检查和比较应用中的特定数据
问题描述
我正在制作一个应用程序来将用户数据存储到 Firebase 实时数据库中。我已成功在 firebase 数据库中保存和检索数据。现在假设用户已经将他的名字存储在数据库中。然后我想检查名称是否存在。
如果它存在,那么该名称是否与存储在我的应用程序中的字符串中的名称相同?
任何的想法?这该怎么做。
用于保存用户名的代码
databaseReference.child("users").child(uniqueID).setValue(name);
有没有办法从数据库中获取这个特定的值?有什么类似的getValue()
东西吗?
这是我的应用程序的顺序:-首先用户将注册,然后登录。当用户第一次登录时,我们会要求他设置一个 4 位密码,该密码将存储在 firebase 数据库中。
这就是我存储密码的方式。现在,当用户单击“SET”时,我们会将输入的密码保存到数据库并将用户重定向到 mainActivity。但是当用户重新打开我们的应用程序时,我们将检查我们的数据库中是否存储了该特定用户的密码。如果密码被存储,那么我们将直接将他发送到密码验证活动,用户将输入密码,我们必须检查密码输入和用户输入的密码是否相同。但是如果数据库中没有密码,那么我们将再次打开此设置密码活动并要求他设置密码。
解决方案
是的,您可以使用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) {
}
});
推荐阅读
- node.js - 使用 aws-nodejs 模板在无服务器中生成 QR 码
- python - ValueError: no enough values to unpack (expected 2, got 1) 我怎么能解决这个问题我刚刚试过
- python - 我有新问题 NumPy 维度
- redis - Redis 持久化主从配置
- javascript - 我可以在 JAVASCRIPT 中没有任何循环的 if 语句中使用 continue 和 break 吗?
- java - 当我选择它时,TabItem 在中心
- php - Laravel Firebase 图片上传分配 URL
- android - 为什么作者在 Room with Android Jetpack 的两个位置定义表格字段?
- php - php关联数组复杂度
- c# - 在插入语句后从 SQL 数据库中检索自动增量 ID