'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