这是我在Firebase中的数据库,我正在开发一个Android应用程序。现在我想从“Generated”节点检索所有数据,其中我当前用户的用户ID与数据中的“userId”匹配。
我想知道Firebase中的查询以获取特定数据。
答案 0 :(得分:1)
Firebase查询firebase query
阅读Firebase实时数据库文档以了解firebase realtime database
获取当前用户Uid
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String current_uid = user.getUid(); // user.getUid() will return null if you are not log in
DatabaseReference db = FirebaseDatabase.getInstance().getReference();
Query query = db.child("Leads").child("Generated").orderByChild("userid").equalTo(current_uid);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// do something
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
或试试这个
db.child("Leads").child("Generated").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists())
{
for (DataSnapshot ds: dataSnapshot.getChildren())
{
SomeClass someClass = ds.getValue(SomeClass.class);
if(someClass.getUid().equals("uid")){
// i don't if it is the best practice or not but you can do with this as well
}
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 1 :(得分:0)
要访问该引用中的每个项目,您需要这样的内容:
mDatabase.child("Leads").child("Generated").child(uid).addValueEventListener(new ValueEventListener() {
final List<String> lstItems= new ArrayList<String>();
@Override
public void onDataChange(final DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String name = (String) ds.getKey();
String values = (String) ds.getValue();
Log.e("Values",""+values );
lstItems.add(values );
}
PS:如果你想要获得Generated的所有孩子(你将成为所有的孩子),你可以删除你的参考文献中的.child(uid)
。