Javascript 使用用户名登录Firebase(非电子邮件)
所以我从某人那里得到了这个代码,但我真的不明白它是如何工作的。特别是对于UsersBean UsersBean。有什么帮助吗?多谢各位Javascript 使用用户名登录Firebase(非电子邮件),javascript,java,android,firebase,firebase-realtime-database,Javascript,Java,Android,Firebase,Firebase Realtime Database,所以我从某人那里得到了这个代码,但我真的不明白它是如何工作的。特别是对于UsersBean UsersBean。有什么帮助吗?多谢各位 Query query = databaseReference.child("users").orderByChild("email").equalTo(txvUsername.getText().toString().trim()); query.addListenerForSingleValueEvent(new ValueEventListener() {
Query query = databaseReference.child("users").orderByChild("email").equalTo(txvUsername.getText().toString().trim());
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
// dataSnapshot is the "issue" node with all children with id 0
for (DataSnapshot user : dataSnapshot.getChildren()) {
// do something with the individual "issues"
UsersBean usersBean = user.getValue(UsersBean.class);
if (usersBean.password.equals(txvPassword.getText().toString().trim())) {
Intent intent = new Intent(context, MainActivity.class);
startActivity(intent);
} else {
Toast.makeText(context, "Password is wrong", Toast.LENGTH_LONG).show();
}
}
} else {
Toast.makeText(context, "User not found", Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
在这段代码中,您正在“用户”节点上查询firebase数据库,并将您的textView值与数据库中保存的电子邮件进行比较。 在此之后,您将在查询上添加SingleValueEventListener,该查询异步工作,您将在onDataChange()函数中从firebase获得回调,该函数将为您提供DataSnapshot对象,并且您可以像DataSnapshot.getValue()一样从该对象获取值 在代码中,您从datasnapshot获取用户节点的所有子节点,并将它们放入一个循环中,以将用户的密码与txvPassword字段相匹配 UserBean是包含如下字段的POJO或模型类 密码、电子邮件等,并且您正在将dataSnapshot的值转换为UserBean类,以便您可以轻松地一次性保存用户的所有详细信息,如下所示:- UsersBean UsersBean=user.getValue(UsersBean.class) 您可以使用UserBean类的所有值来编写进一步的逻辑。
我希望你现在明白了。如果有任何其他疑问,你可以问 Firebase实时数据库将数据存储为JSON。据我所见,您的代码使用的数据库(至少)如下所示:
{
"users": {
"userid1": {
"email": "user1@domain.com",
"password": "passwordforuser1"
},
"userid2": {
"email": "user2@domain.com",
"password": "passwordforuserid2"
}
}
}
此结构中的每个用户都由应用程序中的UsersBean
对象表示。UsersBean
类是为数据库的JSON结构定制的,对于每个用户,JSON中的每个属性都有一个公共字段或属性
上述JSON最简单的UsersBean
如下所示:
public class UsersBean {
public String email;
public String password;
}
所以在这里,我们用一个公共字段来表示每个JSON属性,该字段具有(完全)相同的名称。如果这样做,Firebase客户端可以使用以下命令将属性从DataSnapshot
读取到相应的UsersBean
:
UsersBean usersBean = user.getValue(UsersBean.class);
由于您从某人那里获得了代码,您可能应该要求此人也向您提供他们的
UsersBean
类(以及其他bean类)。虽然这些通常不难创建,但复制工作是没有意义的。对于用户来说仍然有问题。它返回“无法从“UsersBeans”解析symboll。我是否应该为其创建新类?首先,请在firebase控制台中查看users表的字段,然后使用所有同名字段创建此类。然后,它就可以工作了