2017-12-30 27 views
0

Firebase 데이터베이스에서 단일 노드를 업데이트하려고하는데, 두 가지 노드를 하나씩 추가하고 하나는 타이틀로 추가합니다. 재생 목록 하위 항목을 어떻게 업데이트 할 수 있습니까?Firebase가 노드의 모든 자식을 업데이트합니다.

public void addToExistingPlaylist(String title) { 
    Query playlistQuery = mDatabase.child("playlists/" + FirebaseAuth.getInstance().getCurrentUser().getUid()).orderByChild("playlistTitle").equalTo(title); 
    playlistQuery.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) { 
       Playlist playlist = childSnapshot.getValue(Playlist.class); 
       ArrayList<Mix> mixes = new ArrayList<Mix>(); 
       if (playlist.getMixes() != null) { 
        mixes = playlist.getMixes(); 
       } 
       mixes.add(((MusicDetailFragment)mDashboardDetailFragment).mSelectedTrack); 
       playlist.setMixes(mixes); 

       DatabaseReference playlistRef = mDatabase.child("playlists/" + FirebaseAuth.getInstance().getCurrentUser().getUid()); //save this mix under mixes --> userUid -- new song 

       playlistRef.push().setValue(playlist).addOnCompleteListener(new OnCompleteListener<Void>() { 
        @Override 
        public void onComplete(@NonNull Task<Void> task) { 
         if (task.isSuccessful()) { 
          Snackbar newPlayListAddedSnack; 
          newPlayListAddedSnack = Snackbar.make(mCoordinatorLayout, getString(R.string.song_added_to_existing_playlist), Snackbar.LENGTH_LONG); 
          newPlayListAddedSnack.show(); 
         } else { 
          Snackbar errorSnack; 
          errorSnack = Snackbar.make(mCoordinatorLayout, getString(R.string.error_processing_request), Snackbar.LENGTH_LONG); 
          errorSnack.show(); 
         } 
        } 
       }); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
    alert.dismiss(); 
} 

enter image description here

답변

0

제거 푸시(). 코드는 다음과 같아야합니다.

playlistRef.setValue(playlist).addOnCompleteListener(new OnCompleteListener<Void>() { 
...