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

앱에서 firestore value값 가져오기

0 추천

 첫번째 사진은 데이터 클래스입니다. 두개의 인수를 가지고 있습니다.

 

두번째 사진은 firestroe에서 저장한 값을 가져오려고합니다.for문으로 documentSnapshot.data 를 로고로 찍어본결과 firestore에 저장한 값을 잘 불러들여오고있습니다.

 

 

세번째 사진은 firestore에 저장한 값들입니다.저장한 값대로 잘불러오는걸 알수있습니다.

 

4번째 사진은 document.data.value 값을 로고로 찍어봤습니다.왜냐하면 제가 가져오고싶은 값은 key값 말고 value값에 exiset이기 때문에 log로 확인해봤습니다.확인해본결과 value값만 잘 나오는걸 알수있습니다. 저는 저 로그를 보고 아 저 값을 ZzimItemModel 변수에 저장해서 그 안의 exist의 데이터를 가져올수있겠구나 생각했습니다.

 

그래서 마지막 5번째 사진의 나온것처럼 저런 식으로 변수를 저장해서 로그를 찍어봤습니다.그런데 로그는 커녕 딱 저 문장이 에러가 뜨고 에뮬레이터도 실행이 안되고 keeps stopping이 뜹니다.그래서 저는 저 값을 그러면 어떤방식으로 ZzimItemModel 변수에 저장해야 그 안의 값을 온전히 사용할수있을까 이것이 제 의문입니다.위에 파이어스토에 저장된 value값에 exist의 값을 가져오고 싶은겁니다.저장해줄때도 ZzimItemModel 타입으로 저장했기때문에 불러올때도 ZzimItemModel에 불러와서 서버의 데이터를 쓰는것이 맞다고생각하는데 방법을 아시면 알려주세요

 

위에 마지막 사진에 val item : ZzimItemModel = dataModel.value as ZzimItemModel 

이부분에서 에러가뜨는데 에러는 이렇게 나옵니다.

 

image

2달째 코린이 (380 포인트) 님이 2021년 7월 22일 질문

1개의 답변

0 추천
Firebase 에서 제공하는 리턴타입은 님의 클래스와 전혀 다른 클래스입니다. Typecasting을 하면 에러가 나는게 당연하다고 봅니다. Firebase는 JSON Tree입니다. 데이터베이스에 님이 지정한 entity를 저장한다고 그 타입대로 불러올 수 있는 게 아닌 것 처럼 말이죠. Firebase는 님이 어떤 클래스를 사용하는지에 대한 정보를 가지고 있지 않아요.

Firebase SDK에 님이 필요한 타입으로 파싱해주는 콜백이 함수들이 있었던걸 기억합니다. 그리고 한가지 주의할 것은 파이베이스에 사용할 ata class를 정의하실 때는 파이어베이스가 님의 data class의 property에 데이터를 써야해서`val`을 쓸 수가 없었던 것 같습니다.

SDK를 살펴보시고 적절한 함수를 선택해서 쓰시면 될 것 같습니다.
spark (226,420 포인트) 님이 2021년 7월 22일 답변
...