Java 用于获取特定数据的Firebase数据库查询
这是我在Firebase中的数据库,我正在开发一个Android应用程序。现在,我想从“生成的”节点检索所有数据,其中当前用户的userid与数据中的“userid”匹配Java 用于获取特定数据的Firebase数据库查询,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,这是我在Firebase中的数据库,我正在开发一个Android应用程序。现在,我想从“生成的”节点检索所有数据,其中当前用户的userid与数据中的“userid”匹配 我想知道Firebase中用于获取特定数据的查询。要访问该引用中的每个项目,您需要以下内容: mDatabase.child("Leads").child("Generated").child(uid).addValueEventListener(new ValueEventListener() {
我想知道Firebase中用于获取特定数据的查询。要访问该引用中的每个项目,您需要以下内容:
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 );
}
mDatabase.child(“Leads”).child(“Generated”).child(uid).addValueEventListener(新的ValueEventListener()){
最终列表项=新的ArrayList();
@凌驾
公共无效onDataChange(最终数据快照数据快照){
对于(DataSnapshot ds:DataSnapshot.getChildren()){
字符串名称=(字符串)ds.getKey();
字符串值=(字符串)ds.getValue();
Log.e(“值”和“+”值);
添加(值);
}
PS:如果要获取生成的所有子项(将是所有uid),可以删除引用中的.child(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) {
}
});
OPs问题在JSON中没有
子(uid)
层,因此您的侦听器不会有任何结果。对于当前的JSON模型,这需要一个查询,例如Salman500的答案使用的查询。只有当我手动获取UserUID时(从Firebase控制台复制并粘贴到“.equalsTo”。如果我在“.equalsTo”中获取当前的uid,代码才起作用它没有给出任何结果。我甚至检查了当前的uid值。它给出了正确的当前用户的uid。