为什么我无法从Firebase实时数据库检索用户名和密码 [英] Why i can't retrieve username and password from Firebase realtime database
问题描述
我想使用存储在Firebase实时数据库中的用户名和密码登录.但是我的代码不起作用.我包括我的数据库图片和代码.请帮助我.
I want to login using username and password that is stored in Firebase realtime database. But my code does not work. I include my database picture and code. Please help me.
这是数据库映像:
这是我的主要活动代码MainActivity.java
This is my main activity code MainActivity.java
databaseReference=FirebaseDatabase.getInstance().getReference("Client");
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Query query = databaseReference.child("Client").orderByChild("username").equalTo(editTextUsername.getText().toString().trim());
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot user : dataSnapshot.getChildren()) {
Users usersBean = user.getValue(Users.class);
if (usersBean.password.equals(editTextPassword.getText().toString().trim())) {
Toast.makeText(MainActivity.this, "success", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "wrong", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
这是我的用户java类Users.java
Here is my users java class Users.java
public class Users {
String email;
String id;
String password;
String username;
public Users() {
}
public Users(String email, String id, String password, String username) {
this.email = email;
this.id = id;
this.password = password;
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
推荐答案
要解决此问题,请更改以下代码行:
To solve this, please change the following line of code:
databaseReference=FirebaseDatabase.getInstance().getReference("Client");
到
databaseReference=FirebaseDatabase.getInstance().getReference();
由于在查询中使用了对 .child("Client")
的调用,因此无需获取 Client
节点的引用.
There is no need to get a reference of the Client
node since you are using a call to .child("Client")
in your query.
要解决您现在根据评论获得的错误,请从 Users
类中的 id
属性的类型到 long
以及这样的getter和setter方法:
To solve the error you get now according to your comment, plase change the type of your id
property in your Users
class from String
to long
and the getter and setter like this:
public class Users {
String email;
long id;
String password;
String username;
public Users() {
}
public Users(String email, long id, String password, String username) {
this.email = email;
this.id = id;
this.password = password;
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
这篇关于为什么我无法从Firebase实时数据库检索用户名和密码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!