Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如果Firebase中存在值,则获取节点数据_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 如果Firebase中存在值,则获取节点数据

Android 如果Firebase中存在值,则获取节点数据,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我想在Firebase中存在特定值时检索节点 例如:如果我指定的Contact=123存在于任何节点中,则检索该节点的完整数据,即someId1 我的Firebase结构 -Users -someId1 -Contact: 123 -fname: something -lname: something -someId2 -Contact: 456 -fname: something

我想在Firebase中存在特定值时检索节点

例如:如果我指定的Contact=123存在于任何节点中,则检索该节点的完整数据,即someId1

我的Firebase结构

-Users
    -someId1
        -Contact: 123
        -fname: something
        -lname: something

    -someId2
        -Contact: 456
        -fname: something
        -lname: something

如果Contact=123在节点内匹配,如何获取someId1?使用android代码帮助解决问题。

要获取与第一项对应的数据,请使用以下代码行:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference productsRef = rootRef.child("Users");
Query query = productsRef.orderByChild("Contact").equalTo("123");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String fname = ds.child("fname").getValue(String.class);
            String lname = ds.child("lname").getValue(String.class);
            Log.d("TAG", name + "/" + lname);
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
    }
};
query.addListenerForSingleValueEvent(valueEventListener);
根据您的模式,logcat中的输出将是:

something/something

很好的解决方案。当我想要逐个比较多个联系人时,我需要更改什么?Ex-检查ArrayList中的100个联系人。我应该在循环中写查询吗?明白了。。非常感谢你