Firebase 한글 문서는 안보는게 좋겠다

지난 2월달에 Google Cloud + Firebase 를 사용해서 펫 프로젝트를 만들고 있을 때였다. 해당 펫 프로젝트는 아래와 같이 테크 스택을 꾸렸다.
API: Google AppEngine - Python
Front: Vue.js
Static Hosting: Firebase Static Web Hosting
DB: Firebase Firestore
이 조합을 선택한 이유는 Firebase Auth를 그대로 JWT로 쓸 수 있어서 또 다른 인증체계가 필요없기 때문이었다. OIDC나 Oauth2를 처리하려면 얼마나 귀찮은가! (그리고 Firebase Static Web Hosting 좋아요. Netlify 도 좋긴한데 파이어베이스 호스팅도 좋습니다.)

이렇게 시간날때마다 API를 만들던 도중 Firestore 쪽에서 문제를 만났다. 유닛 테스트를 하는데 계속 업데이트 API쪽에서 계속 테스트가 실패했다.

코드는 대략 이랬는데,

1
2
3
4
5
inspection_ref = db.collection('inspection').document(commitId)

inspection_ref.update({
'status': 3
}, firestore.CreateIfMissingOption(True))

계속 firestore.CreateIfMissingOption 이 없다고 에러가 발생했다. (참고로 원래 update 동작 방식은 문서가 있으면 덮어쓰는 방식인데 기존 데이터와 병합하고 싶을 때 CreateIfMissingOption을 씁니다). 아 이상하네
https://firebase.google.com/docs/firestore/manage-data/add-data?hl=ko 에 있는 방식대로 그대로 했는데……

구글 놈들이 문서를 잘못 쓸 일은 없고…. Google Cloud API 저장소를 뒤져서 그 이유를 찾아냈다. google-cloud-python 저장소의 4851 PR에서 해당 방식이 merge=boolean 방식으로 변경된 것이다.

즉 아까 예제코드는

1
2
3
inspection_ref.update({
'status': 3
}, merge=True)

식으로 고치니 잘 동작한다. 혹시혹시혹시나 해서 영어판 파이어스토어 문서를 봤더니

여긴 업데이트가 되어있다. 즉, 제대로 업데이트가 안된 한글 문서가 문제였다. 한글 문서는 2018년 5월 29일에 최종 업데이트 되었고, 그 사이 변경된 사항을 업데이트하지 않았다.

곧바로 구글에 이메일을 보냈다. 맨 처음엔 파이어베이스 오른쪽 위에 있는 “의견보내기”를 눌러서 리포트를 했는데 영 답이 없었다. 그래서 아예 파이어베이스 고객지원쪽을 통해서 해당 내옹을 리포트 했다. 물론 담당 엔지니어는 알려줘서 정말 감사하고 빠른 시간내에 리포트해서 고치겠다는 상투적인 답변을 했지만 2019년 2월 19일에 보고했던 문제는 2개월이 다 된 지금도 해결되지 않았다.

앞으로 구글 파이어베이스 문서를 보실 분은 한글문서 보지말고 영어 문서를 보길 바란다. ~~

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×