2024. 5. 22. 15:36ㆍMobile Programming
포스팅 소개
FireStore 공식 문서를 바탕으로 기본적인 데이터 구조를 알아보고, 안드로이드 스튜디오 Kotlin 코드로 데이터를 추가하여 정상적으로 연동되는지 테스트하였다.
FireStore의 Collection-Document-Field 구조
Collection 아래에 여러 개의 Document, Document 아래에 여러 개의 Field를 생성할 수 있다. Document 아래에 컬렉션도 생성 가능하다. 필드 타입으로는 String, number, boolean, null, map, array, timestamp 등이 있다. 공식 문서 예제를 한 번 보고, 내가 원하는 데이터 구조를 직접 만들어보니 이해하기 더 수월했다.



안드로이드 앱 코드 실행을 통한 데이터 추가
MainActivity에 공식 문서에서 제공하는 데이터 추가 코드를 넣어 실행했다. 코드는 FireStore 객체를 변수에 저장하고, 컬렉션, 문서, 필드 데이터를 add 메소드를 통해 추가한다. Firebase 콘솔을 확인하니 데이터가 제대로 추가되었다.
사실, 이 간단한 코드를 아무리 실행해도 데이터가 추가되지 않았었다. 안드로이드 스튜디오의 프로젝트를 싹 지우고, 앱 등록부터 차근차근 다시 해보니 성공했다. 급하게 라이브러리들을 추가하다가 호환성이 맞지 않았던 걸로 추측된다.
package com.example.kuclubapp
import android.content.ContentValues.TAG
import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import com.example.kuclubapp.ui.theme.KuClubAppTheme
import com.google.firebase.firestore.ktx.firestore
import com.google.firebase.ktx.Firebase
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
KuClubAppTheme {
// A surface container using the 'background' color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
// Access a Cloud Firestore instance from your Activity
val db = Firebase.firestore
// Create a new user with a first and last name
val user = hashMapOf(
"first" to "Ada",
"last" to "Lovelace",
"born" to 1815,
)
// Add a new document with a generated ID
db.collection("users")
.add(user)
.addOnSuccessListener { documentReference ->
Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}")
}
.addOnFailureListener { e ->
Log.w(TAG, "Error adding document", e)
}
}
}
}
}
}

FireStore 사용량에 따른 가격
구글 클라우드에서 공지한 FireStore 무료 할당량은 다음과 같다. Firestore Database > 사용량 페이지에서 읽기/쓰기/삭제 횟수를 확인할 수 있으니, 무료 할당량을 넘기지 않도록 주의해야 한다.

*참고 사이트
https://firebase.google.com/docs/firestore/manage-data/structure-data?hl=ko&_gl=1*1wrc9mh*_up*MQ..*_ga*MTEwMjk1OTYxNC4xNzE2MzU3MzM2*_ga_CW55HF8NVT*MTcxNjM1NzMzNS4xLjAuMTcxNjM1NzMzNS4wLjAuMA.. (FireStore 데이터 구조화 및 쿼리 공식 문서)