LoginSignup
0
0

More than 3 years have passed since last update.

[Android] Cloud FireStore使ってみた

Posted at

前回はRealtime Databaseを使ってみたが、今回はCloud FireStoreを使ってみる。

Gradle

implementation 'com.google.firebase:firebase-firestore:21.2.1'

実装

公式Documentを見る感じ、ルールとかの特別な設定とか特になしでできるっぽい?(お試しで使う場合)
Cloud FireStoreはRealtime Databeseとは違うデータモデルです。データを1つの大きなJsonツリーとして保存していたRealtime Databaseとは違って、データをドキュメントのコレクションとして保存します。

コレクション:複数のドキュメントを格納しているもの
ドキュメント: データを格納しているもの

データ書き込み

FirebaseFirestore.getInstance()でデータベースを取得します。取得したデータベースにデータを追加してみる。

val db = FirebaseFirestore.getInstance()
val user = hashMap(
    "name" to "hoge",
    "age" to 12
)
db.collection("users").add(user) // 1
db.collection("users").document("user_id").set(user) //2

usersというコレクションに、ユーザ(ドキュメント)ごとのデータを追加しています。usersuser_idがなくても自動生成してくれるみたいです。一つ目のやり方はdocumentのuser_idを自動で割り振ってれるそうです。

新しいデータを使いすると、上書きされるみたいなので、データの更新をしたい時は

// user(name:"hoge", age:30) -> user(name:"hoge", age:30)
val useUpdate = hashMap("age" to 12)
db.collection("users).document("user_id").set(
    "age" to 30,
    SetOptions.merge()
)
// user(name:"hoge", age:30) -> user(age:30)
db.collection("users).document("user_id").set("age" to 30)

と思ったらupdate()というメソッドがあるそうだ

db.collection("users").document("user_id").update("age", 30)

データ読み取り

データの読み取りにはget()を使用する。

val user1 = User("u1", 12) 
val user2 = User("u2", 22)
val user3 = User("u3", 32)
val user4 = User("u4", 42)

db.collection("users").add(user1)
db.collection("users").add(user2)
db.collection("users").add(user3)
db.collection("users").add(user4)

// [u1, u2, u3, u4]
db.collection("users").get().addOnCompleteListener { doc ->
                Log.d(TAG, "data: ${doc.result?.documents?.map { it["name"] }}")
            }

簡単なクエリを叩いてみる。

db.collection("users").whereLessThan("age", 30).get().addOnCompleteListener { doc ->
                Log.d(TAG, "data: ${doc.result?.documents?.map { listOf(it["name"], it["age"]) }}")
            }

whereLessThan()は、指定した値よりも小さい値にヒットする。他にも色々あるので試してみたい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0