如何从Android中的Firebase中获取特定数据
我已经在我的应用中集成了Google登录功能,并且正在将一些数据推送到包括用户U-id在内的消防基地。我研究了很多并没有获得任何问题我面临,我想获取特定的数据,例如如果用户A登录并推送5数据,然后用户B登录并推送3数据。我想要一个查询,如果用户A再次进入它将得到他的5个数据仅供参考,并非是由用户B.Thanks提前推数据:)如何从Android中的Firebase中获取特定数据
利用这一点,从火力获取所有数据:
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot data : dataSnapshot.getChildren()) {
FirebaseModel firebasemodel =
data.getValue(FirebaseModel.class);
firebasemodels.add(firebasemodel);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
我已经尝试了所有的.child。 orderby和.equalTo但did'nt工作
我的结构如下:
您还需要数据,这是不包含在您的代码块的参考。因此沿线的(这应该是在此之前)的东西:
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("notepad-secure/notepad");
我在onCreate方法加入这一行 –
要从火力取特殊值,试试这个代码
FirebaseDatabase database;
database.getReference().child("notepad-secure").orderByChild("id").equalTo(user).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getValue() != null) {
for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
User userdet =childSnapshot.getValue(yourclass.class);
String note=userdet.note;
//Here you will get the string values what you want to fetch
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
尝试不工作:( –
首先,在您的孩子将数据添加为user_id键,看起来象下面这样:
id:"",
note:"",
title:"",
user:""
user_id:"{id from which user have you uploaded data}"
而且比你可以与特定的用户数据可以拨打下面的功能就像 下面注:“USER_ID” = ID从用户中有你上传的数据
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
Query query = reference.child("notepad").orderByChild("id").equalTo("user_id");
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
// dataSnapshot is the "notepad" node with all children with id
for (DataSnapshot notepad: dataSnapshot.getChildren()) {
// do something with the individual "notepad_data"
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
.equalTo(“USER_ID”);在参数shuold我添加user_id的值? –
增加值后,它不工作:( –
是的,因为我给你一个子节点的例子..或者,如果你可以传递唯一的任何值为特定用户。可能是你的用户密钥可能是唯一的 – ashish
首先U必须区分.U必须实施Firebase身份验证,才能获得每个USER的Firebase UID。
String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
然后在新的节点seperatly存储。
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
假设您: 即以火力地堡数据库实例和
databaserefernace.child("Data").Child("userID);
? –
然后检索数据 –
当您添加用户数据到火力地堡数据库,则可以使用由FirebaseAuth
对象像这样提供的特定uid
添加它你的数据库strucure这个样子:Firebase root -> notepad-secure -> notepad
,检索数据,您可以使用此代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference notepadRef = rootRef.child("notepad-secure").child("notepad").child(uid);
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String id = dataSnapshot.child("id").getValue(String.class);
String note = dataSnapshot.child("note").getValue(String.class);
String title = dataSnapshot.child("title").getValue(String.class);
String user = dataSnapshot.child("user").getValue(String.class);
Log.d("TAG", id + "/" + note + "/" + title + "/" + user);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
notepadRef.addListenerForSingleValueEvent(eventListener);
您可以广告d此功能通过添加一个user_id并获取基于user_id的数据 – ashish
我正在添加用户id在firebase.the我面临的问题,同时获取该用户数据 –
请检查我的答案希望将帮助你。 – ashish