Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.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
Java Firebase数据库检索值,是否可能_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java Firebase数据库检索值,是否可能

Java Firebase数据库检索值,是否可能,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我有以下代码: DatabaseReference mdatabase = FirebaseDatabase.getInstance().getReference("allmessages"); mdatabase.child(mAuth.getCurrentUser().getUid()).child(userID).child(uploadID).push().setValue("somevalue"); DatabaseReference mdatabase = Fire

我有以下代码:

DatabaseReference mdatabase = FirebaseDatabase.getInstance().getReference("allmessages");
        mdatabase.child(mAuth.getCurrentUser().getUid()).child(userID).child(uploadID).push().setValue("somevalue");
DatabaseReference mdatabase = FirebaseDatabase.getInstance().getReference("allmessages");
 mdatabase.child(mAuth.getCurrentUser().getUid()).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            //Loop through all files in Uploads DataBase
            for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){
                AllChatMessagesGet allChatMessagesGet = postSnapshot.getValue(AllChatMessagesGet.class);
然后在另一个类中,我有以下代码:

DatabaseReference mdatabase = FirebaseDatabase.getInstance().getReference("allmessages");
        mdatabase.child(mAuth.getCurrentUser().getUid()).child(userID).child(uploadID).push().setValue("somevalue");
DatabaseReference mdatabase = FirebaseDatabase.getInstance().getReference("allmessages");
 mdatabase.child(mAuth.getCurrentUser().getUid()).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            //Loop through all files in Uploads DataBase
            for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){
                AllChatMessagesGet allChatMessagesGet = postSnapshot.getValue(AllChatMessagesGet.class);
我是否可以获取
mdatabase.child(mAuth.getCurrentUser().getUid()).child(userID).child(uploadID).push().setValue(“somevalue”)下的所有值根据我上面使用的代码

因为它不能找回我的任何东西。我认为
addValueEventListener
中的上述代码将遍历
mAuth.getCurrentUser().getUid()
的所有子类,并检索“somevalue”

但事实并非如此。那么我如何检索“somevalue”。还有别的办法吗?因为代码是在不同的类中编写的,我不知道如何获取
.Child(userID)
.Child(uploadID)
,这对我来说是个问题

我是否可以检索
mdatabase.child(mAuth.getCurrentUser().getUid())
的所有子级及其下面存在的一些
child
的值


添加并实现一个
ChildEventListener
,而不是
ValueEventListener

您的“somevalue”应该在重写的
onChildChanged
方法的DataSnapshot中。

我已经写了一段代码,下面的代码中有它的一瞥。我所做的是从用户节点获取价值。我已经通过下面的代码收回了它的所有子项,您也可以尝试同样的方法,也许它会帮助您

mFirebaseUserReference = FirebaseDatabase.getInstance().getReference();
 userReference = mFirebaseUserReference.child("Users");

        childEventListener = new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                Log.d("Values",dataSnapshot+"");
                HashMap temp = (HashMap) dataSnapshot.getValue();
                if (temp!=null){
                    if (!temp.get("id").equals(FirebaseAuth.getInstance().getCurrentUser().getUid())){
                        SignInModel signInModel = new SignInModel();
                        signInModel.setPhotoUrl((String)temp.get("photoUrl"));
                        signInModel.setEmail((String)temp.get("email"));
                        signInModel.setName((String)temp.get("name"));
                        signInModel.setId((String)temp.get("id"));
                        arrayList.add(signInModel);
                        adapter.notifyDataSetChanged();
                    }
                }
            }

            @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) {

            }
        };

        userReference.addChildEventListener(childEventListener);

希望能有所帮助。

根据您的评论,要获得
-LCzWNw0nlC3GKsnPH8B
节点下以
-LD
开头的ID,请仅使用
rootRef.child(“AllChatMessages”).child(uid)
,请使用以下代码:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("AllChatMessages").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            for(DataSnapshot dSnapshot : ds.getChildren()) {
                for(DataSnapshot snap : dSnapshot.getChildren()) {
                    String key = snap.getKey();
                    Log.d("TAG", key);
                }
            }
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
uidRef.addListenerForSingleValueEvent(valueEventListener);

输出将是您正在查找的所有ID。

请添加您的数据库结构并ID您想要获取的数据。我已添加了数据库结构的图像,您会问:“我是否可以检索
mdatabase.child(mAuth.getCurrentUser().getUid())
的所有子级及其值(哪些值?)那就存在下面的某个孩子(哪个孩子?)吧。请指出您想要得到的确切值。好的,如果我不清楚,很抱歉。AllChatMessages的2个孩子是userUid。我想调用
mdatabase.child(mAuth.getCurrentUser().getUid())
,并以某种方式获取以LD6开头的child的值。它等于
mdatabase.child(mAuth.getCurrentUser().getUid()).child(userID).child(uploadID).push().setValue(“somevalue”)中的“somevalue”有一种方法,但要更好地理解,“获取以LD6开头的孩子的价值”这是什么意思?通过调用<代码> Mabase.Cube(Muth.GeCurrutuServer)(Guuid())< /C> >,我想从所有IDS中删除一个列表。我从上面复制了我的代码,并尝试将它添加到NoSoCalchange和OnCythPoad中,既不工作,也返回LogHope中的NULL,也考虑接受和投票。