안드로이드

[안드로이드] 파이어스토어의 데이터 가져오기

loasd 2023. 1. 5. 00:06
반응형

https://github.com/lnjky/fashion_people

 

GitHub - lnjky/fashion_people: 패션 추천 어플

패션 추천 어플. Contribute to lnjky/fashion_people development by creating an account on GitHub.

github.com

코드 전체를 보려면 위에 링크를 통해 확인할 수 있습니다.


해당 글은 현재 사용자의 정보를 가져오는 예시로 설명하기 때문에 이전의 로그인 / 회원가입 게시글을 통해 코드를 작성했다면 그대로 적용할 수 있다.

물론 상단의 GitHub 링크를 통해서도 확인할 수 있다.

https://loasd.tistory.com/59

 

[안드로이드] 파이어베이스 / 회원가입 만들기

https://github.com/lnjky/fashion_people GitHub - lnjky/fashion_people: 패션 추천 어플 패션 추천 어플. Contribute to lnjky/fashion_people development by creating an account on GitHub. github.com 코드 전체를 보려면 위에 링크를 통해

loasd.tistory.com

 


위의 링크에서 회원가입시 닉네임, documentID를 파이어스토어에 저장하는 것을 볼 수 있다.

닉네임은 게시글이나 사진, 댓글을 업로드할 경우 표기해줘야 하기 때문에 저장해주었고

documentID는 파이어스토어에 작성한 내용들을 저장하기 위해 구분되는 사용자 정보이기 때문에 회원가입시 같이 파이어스토어에 저장해주었다.

 

그래서 게시글을 작성하거나 사진을 업로드하는 경우 이 데이터들을 가져오는 방법을 작성하려 한다.

먼저 파이어베이스의 공식 문서에 나온 샘플이다.

DocumentReference docRef = db.collection("cities").document("SF");
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.isSuccessful()) {
            DocumentSnapshot document = task.getResult();
            if (document.exists()) {
                Log.d(TAG, "DocumentSnapshot data: " + document.getData());
            } else {
                Log.d(TAG, "No such document");
            }
        } else {
            Log.d(TAG, "get failed with ", task.getException());
        }
    }
});

설명처럼 .get()을 통해 데이터를 가져온다.

if문 안에 해당 경로에 document가 존재할 경우 작동할 코드를 입력해주면 된다.

 

 

아래는 내가 어플을 만들 때 현재 사용자의 정보를 가져오기 위해 사용한 예시 코드이다.

        // 현재 사용자의 데이터 가져오기
        if (mAuth.getCurrentUser() != null) {
            mStore.collection(FirebaseID.user).document(mAuth.getCurrentUser().getUid())
                    .get()
                    .addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
                        @Override
                        public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                            if (task.isSuccessful()) {
                                DocumentSnapshot document = task.getResult();
                                if (document.exists()) {
                                    Log.d("TAG", "Document is exists");
                                    nickname = (String) document.getData().get(FirebaseID.nickname);
                                    documentId = (String) document.getData().get(FirebaseID.documentId);
                                } else
                                    Log.d("TAG", "Document is not exists");
                            }
                        }
                    });
        }

회원가입시 'user - 현재사용자의 documentID'의 경로에 사용자의 정보를 저장해두었기 때문에 경로를

mStore.collection(FirebaseID.user).document(mAuth.getCurrentUser().getUid())

이렇게 해주었다.

물론 이 전에 파이어스토어의 인스턴스를

    private FirebaseFirestore mStore = FirebaseFirestore.getInstance();

이렇게 가져왔기 때문에 mStore.~~으로 작성하였다.

 

사용자의 정보 뿐만 아니라 다른 데이터들을 가져올 때도 위의 방법을 통해 가져올 수 있기 때문에 알아두면 좋다.

 


해당 링크를 통해서도 확인할 수 있다.

https://firebase.google.com/docs/firestore/query-data/get-data?hl=ko#java_8 

 

Cloud Firestore로 데이터 가져오기  |  Firebase

Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기 이 페이지는 Cloud Translation API를 통해 번역되었습니

firebase.google.com

 

반응형