Firebase数据库问题

时间:2018-07-07 07:01:29

标签: android firebase firebase-realtime-database

我想查询我的firabse数据库,其中包含如下图所示的数据。

enter image description here

我想根据userEmail和密码对用户进行身份验证。

如何在此处查询?

4 个答案:

答案 0 :(得分:1)

您应该使用Firebase身份验证。它将为您处理。您可以 还使用安全规则仅将权限授予某些类型的帐户https://firebase.google.com/docs/auth/

答案 1 :(得分:1)

要处理身份验证,应使用FirebaseAuth。请参阅docs

要查询一次数据,您可以使用此

FirebaseDatabase.getInstance().getReference().child("users")
 .addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        // This listens for the data only once and gives it to you in dataSnapshot.
        // Use this code to get the userEmail.
        // String userEmail = String.valueOf(dataSnapshot.child("userEmail"));
    }
    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

答案 2 :(得分:1)

要根据userType进行查询,然后尝试以下操作:

FirebaseDatabase.getInstance().getReference().child("users").orderByChild("userType").equalTo("Child").addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
 public void onDataChange(DataSnapshot dataSnapshot) {

  String id=dataSnapshot.child("id").getValue().toString();
}
@Override
public void onCancelled(DatabaseError databaseError) {

   }
});

使用查询orderByChild,您将能够检索与该查询结果相关的数据。

答案 3 :(得分:1)

要解决此问题,您一定应该实现Firebase Authentication并通过在用户之间添加uid作为唯一标识符来稍微改变数据库结构。因此您的数据库结构应如下所示:

Firebase-root
   |
   --- users
         |
         --- uid
              |
              --- userEmail: "mayank@gmail.com"
              |
              --- userPassword: "123456"
              |
              --- userType: "Child"

如果您不使用这样的数据库结构,最终将覆盖一个用户。要获取uid,您只需使用以下代码行即可:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

最后,要查询数据库,您应该使用以下代码行:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.child("users").orderByChild("userType").equalTo("Child");
query.addListenerForSingleValueEvent(/* ... */);

查询的结果将是数据库中的所有子项。