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();
}