如何使用特定数据

时间:2018-04-21 07:52:49

标签: android firebase

Structure of the database in my Firebase

我想从我的数据库中检索数据。例如:我只想从我的数据库中获取用户名和密码,接下来应该实现什么?

public void loginToSystem(String usernameLogin, String passwordLogin){
    usernameLogin = username.getText().toString();
    passwordLogin = password.getText().toString();

    if(TextUtils.isEmpty(usernameLogin)){
        username.setError("Please Input Username");
        return;
    }
    else if(TextUtils.isEmpty(passwordLogin)){
        password.setError("Please Input Password");
        return;
    }
    else {

        Query query1 = databaseReference.orderByChild("usnername").equalTo(usernameLogin);
        Query query2 = databaseReference.orderByChild("password").equalTo(passwordLogin);

        //What Should I do Here 
    }
}

我应该如何处理守则。

Ps:我正在使用DatabaseReference,我是否正在使用此方法继续登录? 或者我必须使用FireAuth分隔我的数据用户名和密码 和使用Firebase数据库的个人数据

2 个答案:

答案 0 :(得分:0)

您需要添加ValueEventListener才能检索数据:

Query query1 = databaseReference.orderByChild("username").equalTo(usernameLogin);
query.addValueEventListener(new ValueEventListener() {
 @Override
public void onDataChange(DataSnapshot dataSnapshot) {
 for(DataSnapshot datas: dataSnapshot.getChildren()){
   String address=datas.child("address").getValue().toString();
  }
}

 @Override
public void onCancelled(DatabaseError error) {

  }
});

此外,每个听众只能使用一个orderByChild

您不需要在数据库中添加密码,因为密码存储在firebase身份验证中。您还使用push()生成的随机ID。由于您使用的是Firebase Auth,因此请获取用户ID并在其中添加数据。

FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
String userid=user.getUid();

然后你会:

Users
  userid
    address: address_here
    name: name_here
    email:email_here

答案 1 :(得分:0)

您可以做的是当用户点击登录按钮时,您可以在要监听的节点上添加ValueEventListener,然后您将从节点获取整个数据然后我们可以检查如果用户名和密码包含在节点中,那么您可以登录或保存适合您案例的数据。

我通过点击登录按钮尝试了相同的逻辑,它对我有用。请试试以下代码。

DatabaseReference ref = mDatabaseReference.child("YOUR NODE NAME");
                ref.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()){
                            HashMap<String,String> map = (HashMap<String,String>)dataSnapshot1.getValue();
                            if (map.get("username").equals("USERNAME THAT TO BE CHECKED")){
                                Log.d("Testing","True "+map.get("name"));
                            }
                            else {
                                Log.d("Testing","True "+map.get("name"));
                            }
                        }
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });

希望它有效。