android - 插入了数据,但是当我读取数据时,它在 firebase android 上始终显示为空
问题描述
我已经更改了我的 firebase 项目,更改后它根本不起作用。我通过在各个方面更改代码做了很多工作,但没有运气,也找不到问题所在。
我搜索了很多并阅读了文章,但我不知道为什么更改项目后会出现错误。
每次显示无效的用户名时,即使我的代码也是完全正确的。我在我的另一个项目中使用此代码,它工作正常,但在这里它不能。当我添加数据时,它成功添加但检索出错。
我的代码
user = username.getText().toString();
pwd = password.getText().toString();
reference = FirebaseDatabase.getInstance().getReference().child("AdminUsers");
Query qry = reference.orderByChild("email").equalTo(user);
qry.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists())
{
for (DataSnapshot dataSnapshot1:dataSnapshot.getChildren())
{
String cpwd = String.valueOf(dataSnapshot1.child("password").getValue());
password.setText(cpwd);
if (cpwd.equals(pwd))
{
SharedPreferences pref = getSharedPreferences("login",MODE_PRIVATE);
SharedPreferences.Editor edit = pref.edit();
edit.putString("logged","true");
edit.putString("username",user);
edit.commit();
Toast.makeText(Login.this, "Login Successful", Toast.LENGTH_SHORT).show();
Intent home = new Intent(getApplicationContext(),MainActivity.class);
startActivity(home);
finish();
}
else
{
pd.cancel();
Toast.makeText(getApplicationContext(),"Invalid Password "+cpwd,Toast.LENGTH_SHORT).show();
}
}
}
else
{
pd.cancel();
Toast.makeText(Login.this, "Invalid Username", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
pd.cancel();
Toast.makeText(Login.this, "Server Error", Toast.LENGTH_SHORT).show();
}
});
解决方案
您在 node AdminUsers
,要同时获得password
and email
,您不必迭代,因此只需删除 for 循环:
for(DataSnapshot dataSnapshot1:dataSnapshot.getChildren())
并使用:
dataSnapshot.child("password").getValue();
还要确保该user
值实际存在于您的数据库中。这个查询reference.orderByChild("email").equalTo(user)
就像说电子邮件在哪里等于 user_value
推荐阅读
- javascript - 为 Vue.js 保存到本地存储时出错
- perl - 这两个数组声明有什么区别?
- javascript - 没有 else 的三元 if 语句不能与 && 一起使用
- html - 属性选择器没有对 css 进行任何更改
- regex - 如何将过滤器公式创建为数组公式
- angular - Composer-rest-server 在客户端应用程序中自动执行身份验证
- python-3.x - 包含与不包含的区别 [:]
- python - 如何在 Visual Studio Code 中隐藏/灰显日志代码(例如:Python)
- google-bigquery - 标准 SQL 弧度函数
- c++ - 定义类 X 的析构函数,它继承自指向对象 Y 的指针向量并具有指向 Z 的指针数组