无法从 Firebase 数据库中取消节点

Cannot cancel nodes from Firebase Database

我正在开发一个应用程序,但遇到了问题。我开始记录 GPS 位置,但数据开始太多了。所以我实现了一个按钮来取消“位置”下的任何东西(或“纬度”和“经度”下,对我来说是一样的)。问题是似乎没有任何东西被取消到数据库中。 我面临这个问题 2 天,我被卡住了。这是我的数据库:

这是我使用的代码:

public class GalleryFragment extends Fragment {
    private GalleryViewModel galleryViewModel;
    private FragmentGalleryBinding binding;
    DatabaseReference mbase;

    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        galleryViewModel =
                new ViewModelProvider(this).get(GalleryViewModel.class);

        binding = FragmentGalleryBinding.inflate(inflater, container, false);
        View root = binding.getRoot();
        EditText ET = binding.EditProva;
        Button btn = binding.buttonProva;
        FirebaseDatabase database = FirebaseDatabase.getInstance();
        mbase = FirebaseDatabase.getInstance().getReference();

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                DatabaseReference drTest = FirebaseDatabase.getInstance().getReference();
                drTest.child("Location").addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot snapshot) {
                        for(DataSnapshot dataSnapshot:snapshot.getChildren()){
                            dataSnapshot.getRef().setValue(null);
                        }
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError error) {
                        Log.w("Errore DB: ", error.getMessage());
                    }
                });
            }
        });

        galleryViewModel.getText().observe(getViewLifecycleOwner(), new Observer<String>() {
            @Override
            public void onChanged(@Nullable String s) {
                //textView.setText(s);
            }
        });
        return root;
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        binding = null;
    }
   }

在此解决方案之前,我在 :

中使用了该代码
                DatabaseReference latRef = database.getReference("Location/latitude");
                latRef.removeValue();
                DatabaseReference longRef = database.getReference("Location/longitude");
                longRef.removeValue();

但这也行不通。我查看了其他答案,但没有任何帮助。

The problem is that nothing seems to be canceled into the database.

发生这种情况很可能是因为您正试图删除大量数据。如果要删除 Location 节点下存在的所有内容,则应考虑一次删除合理数量的项目。这可以在客户端完成,但您也可以在 Cloud Functions for Firebase 中编写一个函数来获得完全相同的结果。