iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

【Android】Firestoreでバッチ書き込みを行う

本日は、Firestoreの不可分操作の一つである、バッチ書き込みを使ってみたいと思います👷‍♀️

不可分操作(アトミックオペレーション)は、複数の操作を一つの操作として扱うことで、全ての操作が成功、又は失敗するように処理を行うことを指します。Firestoreでは、下記の2種類が該当します。

  • トランザクション
    • 一つ以上のドキュメントで、読み取り・書き込みを行うオペレーション
  • バッチ書き込み
    • 一つ以上のドキュメントで、書き込みを行うオペレーション

バッチ書き込みを使ってみる

今回は、Kotlinでバッチ書き込みを行ってみたいと思います。

        db.runBatch {
            it.set(db.collection("users").document(), User())
            it.delete(db.collection("users").document("uid"))
        }.addOnCompleteListener {
            // TODO: Completion handler.
        }

バッチ書き込みでは、set()update()delete()などを組み合わせて上記のように処理を行うことができます。ちなみに、バッチを実行する場合通常はbatch.commit()をする必要がありますが、runBatch { }メソッド内では、下記のように処理の最後に、自動的に書き込みがコミットされます。

  @NonNull
  public Task<Void> runBatch(@NonNull WriteBatch.Function batchFunction) {
    WriteBatch batch = batch();
    batchFunction.apply(batch);
    return batch.commit();
  }

ちなみに、手動でバッチを処理したい場合は、下記のようにWriteBatchを取得できます。

private val db = Firebase.firestore

var batch = db.batch()

てな感じで本日も以上となります🍺

参考

その他の記事

yamato8010.hatenablog.com

yamato8010.hatenablog.com

yamato8010.hatenablog.com