본문 바로가기
Front-end/Android (안드로이드 앱 개발)

Android Studio , Firebase 파이어베이스 : 실시간 데이터베이스 게시물 삭제 + 스토리지 삭제

by javapp 자바앱 2021. 1. 13.
728x90

 

 

Storage 파일 삭제

storage 파일 삭제는 해당 파일명이 필요하다.

 

우선 파일 업로드시 파일 명을 ImageDTO에 저장한다.

 

imageDTO.setImageName(file.getLastPathSegment());

 

 

child 파라미터로 폴더명이나 파일명 조합으로 한다.

.child("폴더명").child("파일명")

    private void onDeleteImage(final int position)
    {
        storage.getReference().child("images").child(imageDTOList.get(position).getImageName()).delete().addOnSuccessListener(new OnSuccessListener<Object>() {
            @Override
            public void onSuccess(Object o) {
                onDeleteContent(position);
            }
        });
    }

 


 

실시간 데이터베이스 삭제

실시간 데이터베이스 구조

Content를 테이블 명이라고 생각하면 편하겠다.

.child("Content") //Content 내에서

.child(uidList.get(position)) //Key 명 을 삭제

 

    private void onDeleteContent(int position)
    {
        firebaseDatabase.getReference().child("Content").child(uidList.get(position)).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                Toast.makeText(context, "삭제 성공", Toast.LENGTH_SHORT).show();
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                System.out.println("error: "+e.getMessage());
                Toast.makeText(context, "삭제 실패", Toast.LENGTH_SHORT).show();
            }
        });
    }

 

 

키 얻는 방법

값 이벤트 수신 대기 (옵저버 패턴)

ds.getKey();

    private List<String> uidList = new ArrayList<>(); //게시물 key
        //옵저버 패턴 --> 변화가 있으면 클라이언트에 알려준다.
        firebaseDatabase.getReference().child("Content").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {  //변화된 값이 DataSnapshot 으로 넘어온다.
                //데이터가 쌓이기 때문에  clear()
                imageDTOList.clear();
                uidList.clear();
                for(DataSnapshot ds : dataSnapshot.getChildren())           //여러 값을 불러와 하나씩
                {
                    ImageDTO imageDTO = ds.getValue(ImageDTO.class);
                    String uidKey = ds.getKey();

                    imageDTOList.add(imageDTO);
                    uidList.add(uidKey);
                }
                uploadedImageAdapter.notifyDataSetChanged();                //변화시 갱신
            }

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

            }
        });

 

 

 

댓글