'Writing and reading data simultaneously in firebase
I am working on an android app and I am writing some data in firebase.
{
"movies" : {
"movie2" : {
"movieId" : "movie2",
"movieReleaseDate" : "7/10/2018",
"movieThumbnail" : "http://flp.businessofboxoffice.com/images/kabali.jpg",
"movieTitle" : "Kabali (2018 Film) - Official Trailer",
"movieYoutubeLink" : "https://youtu.be/9wY_vb4pkLs"
},
"movie3" : {
"movieId" : "movie3",
"movieReleaseDate" : "7/10/2018",
"movieThumbnail" : "http://flp.businessofboxoffice.com/images/pic09.jpg",
"movieTitle" : "Movie Demo (2018 Film) - Official Trailer",
"movieYoutubeLink" : "https://youtu.be/9wY_vb4pkLs"
}
}
}
I am adding a child movieLotteryTicket under movie2 node after this (in a same click) adding the updated movie2 node under a different section named userFavourites
But I am not getting the updated movie2 node in userFavourites
{
"movies" : {
"movie2" : {
"movieId" : "movie2",
"movieReleaseDate" : "7/10/2018",
"movieLotteryTicket" : {
"[email protected]" : "12300"
},
"movieThumbnail" : "http://flp.businessofboxoffice.com/images/kabali.jpg",
"movieTitle" : "Kabali (2018 Film) - Official Trailer",
"movieYoutubeLink" : "https://youtu.be/9wY_vb4pkLs"
},
"movie3" : {
"movieId" : "movie3",
"movieReleaseDate" : "7/10/2018",
"movieThumbnail" : "http://flp.businessofboxoffice.com/images/pic09.jpg",
"movieTitle" : "Movie Demo (2018 Film) - Official Trailer",
"movieYoutubeLink" : "https://youtu.be/9wY_vb4pkLs"
}
},
"userFavourites" : {
"bbbb@gmail,com" : {
"movie2" : {
"movieId" : "movie2",
"movieReleaseDate" : "7/10/2018",
"movieThumbnail" : "http://flp.businessofboxoffice.com/images/kabali.jpg",
"movieTitle" : "Kabali (2018 Film) - Official Trailer",
"movieYoutubeLink" : "https://youtu.be/9wY_vb4pkLs"
}
}
}
}
When I delete the movie2 node in userFavourites and add again with same button click now I am getting correct updated movie2 node
{
"movies" : {
"movie2" : {
"movieId" : "movie2",
"movieReleaseDate" : "7/10/2018",
"movieLotteryTicket" : {
"[email protected]" : "12300"
},
"movieThumbnail" : "http://flp.businessofboxoffice.com/images/kabali.jpg",
"movieTitle" : "Kabali (2018 Film) - Official Trailer",
"movieYoutubeLink" : "https://youtu.be/9wY_vb4pkLs"
},
"movie3" : {
"movieId" : "movie3",
"movieReleaseDate" : "7/10/2018",
"movieThumbnail" : "http://flp.businessofboxoffice.com/images/pic09.jpg",
"movieTitle" : "Movie Demo (2018 Film) - Official Trailer",
"movieYoutubeLink" : "https://youtu.be/9wY_vb4pkLs"
}
},
"userFavourites" : {
"bbbb@gmail,com" : {
"movie2" : {
"movieId" : "movie2",
"movieReleaseDate" : "7/10/2018",
"movieLotteryTicket" : {
"[email protected]" : "12300"
},
"movieThumbnail" : "http://flp.businessofboxoffice.com/images/kabali.jpg",
"movieTitle" : "Kabali (2018 Film) - Official Trailer",
"movieYoutubeLink" : "https://youtu.be/9wY_vb4pkLs"
}
}
}
}
Here is my code when I click button
public void OnMovieClicked(final Movie movie, View view) {
// geting movieLotteryTicket
RelativeLayout relativeLayout = ((RelativeLayout) view);
StringBuilder lottery = new StringBuilder();
for (int i = 0; i < relativeLayout.getChildCount();i++){
View v = relativeLayout.getChildAt(i);
if(v.getId()==R.id.checkBoxLottery1){
if(((CheckBox)v).isChecked()){
lottery.append("1");
}
else {
lottery.append("0");
}
}
if(v.getId()==R.id.checkBoxLottery2){
if(((CheckBox)v).isChecked()){
lottery.append("2");
}
else {
lottery.append("0");
}
}
if(v.getId()==R.id.checkBoxLottery3){
if(((CheckBox)v).isChecked()){
lottery.append("3");
}
else {
lottery.append("0");
}
}
if(v.getId()==R.id.checkBoxLottery4){
if(((CheckBox)v).isChecked()){
lottery.append("4");
}
else {
lottery.append("0");
}
}
if(v.getId()==R.id.checkBoxLottery5){
if(((CheckBox)v).isChecked()){
lottery.append("5");
}
else {
lottery.append("0");
}
}
}
final String finalLottery = lottery.toString();
final DatabaseReference lotteryDatabaseReference;
lotteryDatabaseReference = FirebaseDatabase.getInstance().getReference().child("movies").child(movie.getmovieId()).child("movieLotteryTicket");
lotteryDatabaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.child(Constants.encodeEmail(mUserEmailString)).getValue()!=null){
Toast.makeText(getActivity(),"Already bought Lottery for this movie ",Toast.LENGTH_SHORT).show();
}
else {
dataSnapshot.getRef().child(Constants.encodeEmail(mUserEmailString)).setValue(finalLottery);
Toasa t.makeText(getActivity(),"Thanks for buying lottery tickets....",Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
// adding movie to user Favourites
if (Constants.isIncludedInMap(mFavouriteMoviesMarkedMap,movie)){
mGetAllFavouriteMoviesMarkedReference.child(movie.getmovieId())
.removeValue();
mCompositeSubscription.add(mLiveMoviesService.addOrRemoveFavourite(mSocket,mUserEmailString,
movie.getmovieId(),"1"));
} else{
mGetAllFavouriteMoviesMarkedReference.child(movie.getmovieId())
.setValue(movie);
mCompositeSubscription.add(mLiveMoviesService.addOrRemoveFavourite(mSocket,mUserEmailString,
movie.getmovieId(),"0"));
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
