2016-07-01 10 views
0

Firebaseデータベースの項目の更新方法。私は新しいリストを設定するためにsetValueを使うことができますが、リストの1つの項目を追加する方法を見つけることができませんでした。 (私はリストのすべてのアイテムを更新するために1つのアイテムのみを送信したくない)。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を使用しました。

関連する問題