2016-07-01 2 views
0

Firebase 데이터베이스의 항목 목록을 업데이트하는 방법. 나는 새 목록을 설정하기 위해 setValue를 사용할 수 있지만 목록의 한 항목을 추가하는 방법을 찾지 못했습니다. (나는 목록의 모든 항목을 하나의 항목 만 업데이트하도록 보내지 않습니다.)Firebase에서 항목 목록을 업데이트하는 방법은 무엇입니까?

이 예제에서는이 작업을 시도하지만 ref.updateChildren 메서드가 올바르게 작동하지 않습니다. 그것은 저에게 databaseReference를 보여 주지만 Firebase에 어떤 변화도 보이지 않습니다.

final DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("apps"); 
     for (final App app : apps) { 
      ref.child(app.getFirebaseKey()).addValueEventListener(new ValueEventListener(){ 

       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        if (!dataSnapshot.exists()) { 
         ref.setValue(app.getFirebaseValue()); 
        } else { 
         //check need add my phone or no. 
         FirebaseApp firebaseApp = dataSnapshot.getValue(FirebaseApp.class); 
         String myPhone = app.getFirebaseValue().getPhones().get(0); 
         if (firebaseApp.getPhones().contains(myPhone)) { 
          //do nothing 
         } else { 
          firebaseApp.getPhones().add(myPhone); 
          Map<String, Object> updates = new HashMap<String, Object>(); 
          updates.put("phones", firebaseApp.getPhones()); 
          ref.updateChildren(updates, new DatabaseReference.CompletionListener() { 
           @Override 
           public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) { 
            if (databaseError == null) { 
             Log.i(TAG, "databaseReference=" + databaseReference); 
            } else { 
             Log.i(TAG, "databaseError=" + databaseReference); 
            } 
           } 
          }); 
         } 
        } 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 

       } 
      }); 
     } 

답변

0

제 실수입니다. ref.child (app.getFirebaseKey());의 내부 클래스에서 ref를 사용했습니다.

관련 문제