티스토리 뷰

파이어베이스의 FireStore를 사용하다보면 쿼리 검색의 결과를 Query로 돌려준다

Query에서 원하는 필드의 값을 얻는 방법은 의외로 간단하다

 

db.collection("books").document(group).collection("contents")
                .whereLessThan("timestamp", new Timestamp(new Date(year - 1900, month, 0)))
                .whereGreaterThanOrEqualTo("timestamp", new Timestamp(new Date(year - 1900, month - 1, 0)))
                .get()
                .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                    @Override
                    public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                       	for (DocumentSnapshot ds : queryDocumentSnapshots.getDocuments()) {
                        	String value = ds.get("key").toString();
                        }
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {

                    }
                });

위의 코드에서 주목해서 봐야할 부분은 onSuccess() 함수이다

 

Query에 addOnSuccessListener()를 달게 된다

리스너는 QuerySnapshot을 받아오고 여러 문서들을 getDocuments() 함수를 이용하여 얻어온 후 프로그래머가 원하는 동작을 정의하면 된다

각 문서의 필드를 얻는 방법은 ds.get("key")로 얻어오면 된다

파이어베이스에서 지원하는 모델 구조에 따라 getString(), getData(), getLong() 등으로 필드의 값을 얻어올 수도 있다