如何从一个用户ID Firebase Android读取/查询数据 [英] How to read / query data from one userID Firebase Android

查看:148
本文介绍了如何从一个用户ID Firebase Android读取/查询数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想检索给定用户ID的数据,我将这些数据作为值存储在每个用户的数据库中。我的数据库结构如下所示:

  user:{
UserID:{
uniqueId:{
名称:
电子邮件地址:
userId:
}

用户名:{
uniqueId:{
名称:
电子邮件:
userId:
}
}

我试过这个,但它似乎不工作,因为它不显示任何应用程序:

  FirebaseUser user = mAuth.getCurrentUser(); 
df.child(UsersTable)。orderByChild(userid)。equalTo(user.getUid())。addChildEventListener

即使当我尝试给出如下的特定值时,它仍然不会从firebase读取:
-------------更新:



我想从userID获取所有数据。例如,我想从fmXWU324VHdDb8v6h7gvNjRojnu33中检索所有信息,这些信息将是名称,电子邮件和用户标识符。

  UserTable 
{
fmXWU324VHdDb8v6h7gvNjRojnu33:{
-KbJtw467nl6p253HZ537:{
Name:name1,
Email:something1@something.com,
userid:fmXWU324VHdDb8v6h7gvNjRojnu33
}
},
pJtC45fW0MMi352UiPWnWdIS7h88:{
-Kb012ls9iMnzEL723o9I:{
Name:name2 ,
Email:something2@something.com,
userid:pJtC45fW0MMi352UiPWnWdIS7h88
},
-Kb0aq0q25FJq38256SrC:{
名称:name3,
Email:something3@something.com,
userid:pJtC45fW0MMi352UiPWnWdIS7h88
},
-Kb0atopfK64F6jy124Qi1u:{
Name:name3,
Email:something1@something.com,
userid:pJtC45fW0MMi352UiPWnWdIS7h88
}
}
  DatabaseReference df = <$ p 


$ b

FirebaseDatabase.getInstance()
.getReference(user)。child(getCurrentUser()。getUid());

df.addChildEventListener(new ChildEventListener(){
@Override $ b $ public void onChildAdded(DataSnapshot dataSnapshot,String s){
get(dataSnapshot);
}
...
...

更新3:



我假设基于我正在查找(获取定义的userId下的所有数据)查询应该看起来像这样:


$ b $ pre $ df.child(UserTable)。child(user.getUid()))。addChildEventListener(new ChildEventListener()

然而,这是抛出这个错误:

 无法将java.lang.String类型的对象转换为com.android.example.UserTable类型


<解决方案尝试使用 addChildEventListener 和下面的Query。

  mReference.child(使用();}}。orderByChild(userId)。equalTo(user.getUid())。addChildEventListener(new ChildEventListener(){
@Override
public void onChildAdded(DataSnapshot dataSnapshot,String s){

//处理数据对象

$ b @Override
public void onChildChanged(DataSnapshot dataSnapshot,String s){

}
$ b $ @覆盖
public void onChildRemoved(DataSnapshot dataSnapshot){


$ b @Override
public void onChildMoved DataSnapshot dataSnapshot,String s){

}
$ b $ @覆盖
public void onCancelled(DatabaseError databaseError){

}
});

或者使用 addValueEventListener

$ ())));} $ {
$ b $ pre $ mReference.child(用户)。orderByChild(userId)。equalTo(user.getUid())。addValueEventListener(new ValueEventListener {
@Override
public void onDataChange(DataSnapshot dataSnapshot){

//处理数据对象

}

@Override
public void onCancelled(DatabaseError databaseError){
// toastMsg(databaseError.getMessage());
Log.e(TAG,onCancelled:+ databaseError.getMessage()) ;
}
});


I want to retrieve data for a given user ID, which I am storing as a value in the database under each user. My database structure looks like below:

user: {
    UserID: { 
       uniqueId: {
         Name: ""
         Email: ""
         userId: ""
    }

    UserID: { 
       uniqueId: {
         Name: ""
         Email: ""
         userId: ""
    }
}

I tried this but it doesn't seem to work as it doesn't display anything on the app:

FirebaseUser user = mAuth.getCurrentUser();
df.child("UsersTable").orderByChild("userid").equalTo(user.getUid())).addChildEventListener

even when I try to give a specific value like below, it still does not read from firebase: ------------- Updated:

I want to get all data from userID. so for example, I want to retrieve all information from fmXWU324VHdDb8v6h7gvNjRojnu33, which will be name, email and userid.

UserTable
{
  "fmXWU324VHdDb8v6h7gvNjRojnu33" : {
    "-KbJtw467nl6p253HZ537" : {
      "Name" : "name1",
      "Email" : "something1@something.com",
      "userid" : "fmXWU324VHdDb8v6h7gvNjRojnu33"
    }
  },
  "pJtC45fW0MMi352UiPWnWdIS7h88" : {
    "-Kb012ls9iMnzEL723o9I" : {
      "Name" : "name2",
      "Email" : "something2@something.com",
      "userid" : "pJtC45fW0MMi352UiPWnWdIS7h88"
    },
    "-Kb0aq0q25FJq38256SrC" : {
      "Name" : "name3",
      "Email" : "something3@something.com",
      "userid" : "pJtC45fW0MMi352UiPWnWdIS7h88"
    },
    "-Kb0atopfK64F6jy124Qi1u" : {
      "Name" : "name3",
      "Email" : "something1@something.com",
      "userid" : "pJtC45fW0MMi352UiPWnWdIS7h88"
  }
}

Update 2:

     DatabaseReference df= FirebaseDatabase.getInstance()
                        .getReference("user").child(getCurrentUser().getUid());   

df.addChildEventListener(new ChildEventListener() {
                    @Override
                    public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                        get(dataSnapshot);
                    }
            ....
            ...

Update 3:

I assume based on what I am looking for (getting all data under defined userId) the query should look something like this:

df.child("UserTable").child(user.getUid())).addChildEventListener(new ChildEventListener() 

However, this is throwing this error:

Can't convert object of type java.lang.String to type com.android.example.UserTable

解决方案

Try Using addChildEventListener and Query like following..

mReference.child("user").orderByChild("userId").equalTo(user.getUid()).addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String s) {

        //deal with data object
    }

    @Override
    public void onChildChanged(DataSnapshot dataSnapshot, String s) {

    }

    @Override
    public void onChildRemoved(DataSnapshot dataSnapshot) {

    }

    @Override
    public void onChildMoved(DataSnapshot dataSnapshot, String s) {

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

OR use addValueEventListener

mReference.child("user").orderByChild("userId").equalTo(user.getUid()).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

             //deal with data object

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            //toastMsg(databaseError.getMessage());
            Log.e(TAG, "onCancelled: " + databaseError.getMessage());
        }
    });

这篇关于如何从一个用户ID Firebase Android读取/查询数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆