마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

파이어베이스 데이터 하위 값만 알 때, 데이터 삭제하기

0 추천
파이어베이스 공부 중인 개발 초보입니다.

제가 랜덤함수를 사용해서 데이터베이스에 값을 넣는 작업 중인데요,

예를 들어서,

User

  >User01

     >value : 123

User

  >User02

     >value : 234

라는 데이터(123과 234)가 랜덤으로 저장이되어있습니다.

(다음에 저장할 때는 랜덤이기 때문에 User01에 234, User02에 123이 저장될 수도 있음)

여기서 저는 value == 234라는 값만 알고,  그 값의 상위 key( 예시에서는 User02 )를 remove()하고 싶은데 랜덤이다보니 상위값이 계속 바껴서 어떤 식으로 코드를 짜야하는지 모르겠습니다..

push함수를 쓰기에는 데이터베이스 안에 같은 value값이 중복으로 들어가면 안되기 때문에 쓰지않았습니다.

추가로, 키값이 한글로 설정되면 오류가 발생하는데 한글로도 가능한 방법이 있을까요??

도움 부탁드립니다 ㅜㅜ
안촙 1 (280 포인트) 님이 2022년 5월 25일 질문

1개의 답변

0 추천

value를 가져올 때 User01, User02에 해당하는 document Id도 포함해서 파싱하세요. 제 기억으로는 toObject메소드로 파싱할 때 id 필드가 존재하면 자동으로 document id가 해당 필드에 저장되었던 기억이 있네요.

public class User {
    public String id;
    public String value;
    // constructror, getter, setter 생략
}

public class UserRepository {
   interface Listener {
       onUserFetched(List<User> users);
       onUserFetchError(Throwable error);
  }

  private Listener listener;
  public void setListener(Listener listener) {
       this.listener = listener;
  }

   public void fetchUsers() {  
      db.collection("cities")
        .get()
        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (!task.isSuccessful()) {
                     if (listener != null) listener.onUserFetchFailure(task.getException());
                     return;
                }

                List<User> users = new ArrayList<>();
                for (QueryDocumentSnapshot document : task.getResult()) {
                        User user = document.getData().toObject(User.class);
                        // id 필드가 자동으로 채워지지 않으면 user.setId(document.getId()); 호출
                       users.add(users);
                 }
                 if (listener != null) listener.onUserFetchError(users)
            }
        });
    }
}

 

spark (227,470 포인트) 님이 2022년 5월 25일 답변
spark님이 2022년 5월 25일 수정
...