如何从Firebase数据库中删除此特定节点?

问题描述 投票:0回答:1

我已经在应用中创建了一个“赞”按钮。当用户单击“赞”按钮时,将创建一个带有孩子(随机密钥)的名为“喜欢帖子”的节点,您可以在其中保存帖子的详细信息,就像在图像中看到的那样。但是,当我再次单击“赞”按钮时,该节点应按照标准被删除。但是,这没有发生。

enter image description here

这是我的代码:

 holder.fav.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {


            if (sharedPreferences.contains(Title)) {

                holder.fav.setBackgroundResource(R.drawable.unfavorited);
                sharedPreferences.edit().remove(Title).apply();
                String id = likesReference.push().getKey();
                 FirebaseDatabase.getInstance().getReference("Users").child(firebaseAuth.getUid()).child("Liked Posts").child(id).removeValue();



                Toast.makeText(context, "Removed from Favorites !", Toast.LENGTH_SHORT).show();

            } else {

                holder.fav.setBackgroundResource(R.drawable.favorited);
                sharedPreferences = context.getSharedPreferences("FavNews", MODE_PRIVATE);
                myEditor = sharedPreferences.edit();
                myEditor.putString(Title, Title);
                myEditor.apply();
                likesReference = FirebaseDatabase.getInstance().getReference("Users").child(firebaseAuth.getUid()).child("Liked Posts");

                Toast.makeText(context, "Added to Bookmarks", Toast.LENGTH_SHORT).show();
                likesReference.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        HomeModel homeModel1 = new HomeModel(holder.newsTitleTextView.getText().toString().trim(), holder.newsDetailTextView.getText().toString().trim(),
                                holder.timesAgo.getText().toString().trim(), homeModel.getNewsImage(), homeModel.viewCounts);

                        String id = likesReference.push().getKey();

                        Log.e("KEY IS", id);  //right one

                        likesReference.child(id).setValue(homeModel1);


                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });


            }

如何删除“喜欢的帖子”?

android firebase-realtime-database android-recyclerview togglebutton
1个回答
0
投票

作为firebase documentation状态,对于array字段,应使用arrayRemove功能:

washingtonRef.update("regions", FieldValue.arrayRemove("east_coast"))
© www.soinside.com 2019 - 2024. All rights reserved.