如何从一个用户ID Firebase Android读取/查询数据 [英] How to read / query data from one userID 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
}
}
$ c $更新2: 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屋!