【问题标题】:How to retrieve child data in Firebase by using "PUSH" without an any encryption format如何在不使用任何加密格式的情况下使用“PUSH”检索 Firebase 中的子数据
【发布时间】:2014-11-11 07:17:55
【问题描述】:

我正在 android 中构建一个 messenger 应用程序,我正在尝试从我的 android 应用程序中的 Firebase 检索数据。但是当我这样做时,我会在屏幕上看到完整的树。我想直接访问孩子。有没有办法只获得我想要的价值?

retr.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // Attach an listener to read the data at our posts reference
        ref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot snapshot) {
                totalmsg[0] =snapshot.getValue().toString();
                emultiview.setText(totalmsg[0].toString());
            }
            @Override
            public void onCancelled(FirebaseError firebaseError) {
                System.out.println("The read failed: " + firebaseError.getMessage());
            }
        });
    }
});

我想在 Firebase 中从这里检索你好。我在这里面临的问题是加密数据。有什么办法可以找回吗?如果不使用 push() 就无法追加数据,还有其他替代 push() 的方法吗?

{
  "chat" : {
    "-JZvOzp0L1ccuBt2TVN7" : {
      "author" : "JavaUser21221",
      "message" : "hello "
    },
    "-JZvPneW5et0_EVRvL5g" : {
      "author" : "JavaUser21221",
      "message" : "hai"
    }
}

【问题讨论】:

  • 您可以使用ref.child('path/to/child').addValueEventListener( 获取您要寻找的孩子。见firebase.com/docs/java-api/javadoc/index.html
  • 我很抱歉,但我不明白什么是“通往孩子的道路”是一个网址吗?哪里应该实现这个代码,有没有办法单独获取孩子的网址?....请帮助我,我是初学者。
  • 如果您想要更好的解释,请编辑您的问题以包含有关您的数据结构的一些信息。 @Ankita 在下面的答案中举了一个例子。

标签: java javascript php android firebase


【解决方案1】:
r.addChildEventListener(new ChildEventListener() {
                    @Override
                    public void onChildAdded(DataSnapshot snapshot, String previousChildKey) {

                        Map<String,Object> newPost=(Map<String,Object>)snapshot.getValue();

                        String name1 = String.valueOf(newPost.get("Author"));
                        String message1 = String.valueOf(newPost.get("Title"));


                        System.out.println("Message: " + newPost.get("Author"));
                        System.out.println("Name: " + newPost.get("Title"));

                    }
                });

【讨论】:

    【解决方案2】:

    假设您的 firebase 数据库中有以下结构:

    users:{ uid:[userid]
              name:[username]
    }
    Student:{ rollno:[rollno]
              name:[studendname]
    }
    

    然后要访问用户子项,您可以使用 url ref.child('users/'+userid).addValueEventListener(...

    【讨论】:

      【解决方案3】:

      这是我找到的最终答案

      ref1.addChildEventListener(new ChildEventListener() {
                          // Retrieve new posts as they are added to Firebase
                          @Override
                          public void onChildAdded(DataSnapshot snapshot, String previousChildKey) {
      
                              Map<String,Object> newPost=(Map<String,Object>)snapshot.getValue();
      
                              String name1 = String.valueOf(newPost.get("Name"));
                              String message1 = String.valueOf(newPost.get("Message"));
      
                              System.out.println("---------------- full data ---------------------");
                              System.out.println("Message: " + newPost.get("Message"));
                              System.out.println("Name: " + newPost.get("Name"));
                              System.out.println("----------------- end of full data --------------------");
      
                              if(name1.equals("CCCCC"))
                              {
                                  System.out.println("---------------- conditioned data ---------------------");
                                  System.out.println("Message: " + newPost.get("Message"));
                                  System.out.println("Name: " + newPost.get("Name"));
                                  System.out.println("----------------- end of conditioned data --------------------");
                              }
                          }
      
                          @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(FirebaseError firebaseError) {
      
                          }
                      });
                  }
              });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多