有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从firebase实时数据库中获取包含唯一密钥的字符串

我想从中获取一个字符串:

firebase DB

,但它有一个唯一的密钥父级。如何从数据库中获取字符串?我试过:

    firebaseAuth = FirebaseAuth.getInstance();
    fUID =firebaseAuth.getCurrentUser().getUid();
    itemsUrl ="https://nextweaverproject.firebaseio.com/users/" + fUID  ;
    mDatabase = FirebaseDatabase.getInstance();
    final DatabaseReference myRef = mDatabase.getReferenceFromUrl(itemsUrl);
    myRef.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                Map<String, Object> td = (HashMap<String,Object>)    dataSnapshot.getValue();
                List<Object> values = new ArrayList<Object>(td.values());

                    strFb = new ArrayList<String>();
                    strFb.add(values.get(0).toString());


               // strFb.add(urlLong);
                Log.v("test","   "  +  strFb.get(strFb.size()-1));

        }

但它返回数据库中的所有对象


共 (2) 个答案

  1. # 1 楼答案

    谢谢大家。我通过以下方式找到了解决方案:

    myRef.child("Scenes").child("Scene").addValueEventListener(new ValueEventListener() {
                   @Override
                   public void onDataChange(DataSnapshot dataSnapshot) {
                       for (DataSnapshot children : dataSnapshot.getChildren()) {
                           for (DataSnapshot child : children.getChildren()) {
                               //Log.v("key1","   " + child.getKey());
                               if(child.getKey().equals("Thumb")){
                                   for (DataSnapshot child2 : child.getChildren()) {
                                       //Log.v("key2","   " + child2.getValue(String.class));
                                       for (DataSnapshot child3 : child2.getChildren()) {
                                           //Log.v("key3","   " + child3.getKey());
                                           if(child3.getKey().equals("LongUrl")){
                                               Log.v("key4","   " + child3.getValue(String.class));
                                                thumbUrl.add(child3.getValue().toString());
                                           }
                                       }
                                   }
                               }
                           }
    
                           Log.v("keyResult","   " + thumbUrl);
                          // Log.v("key2","   " + thumbUrl);
                       }
                   }
    
                   @Override
                   public void onCancelled(DatabaseError databaseError) {
    
                   }
               });
    

    结果如下:Result

  2. # 2 楼答案

    可以使用child从数据库树获取数据:

    myRef.child("Scenes").child("Scene").("******").
    (*****).addChildEventListener(new ChildEventListener() {
    

    这样你应该把你的领域链起来

    你也可以使用addValueEventListener, addListenerForSingleValueEvent。 你可以在这里读到: https://firebase.google.com/docs/database/android/retrieve-data