Open7

iOSでFirestoreを使うときのハック

FirebaseFirestoreSwiftで利用される@DocumentIDの問題。

  • DocumentIDはオプショナル
  • Nestした構造に使えない

FirebaseFirestoreSwiftでは次のようにidを定義する。このときidがnilであればidは自動生成される

struct YourEntity: Codable {
   @DocumentID var id: String?
}

Firebase DocumentIDの発行はAutoIDで英数字大文字小文字を合わせてランダム生成される。
なぜランダムに生成してるのかはDBの性能に関わるの問題なのでDBのAuto Incrementを勉強してください。

FirebaseFirestoreSwiftでDocumentIDが決定するのはDocumentにデータをセットするタイミングだと思われる。この場合一度Documentを保存してからでないとDocumentIDが使えない。

本家のDocumentIDはJSONDecoder,JSONEncoderには非対応。

idを持った構成をNestしたいときに対応できない。


struct Team: Identifiable, Codable {
  @DocumentID var id: String
  var members: [User]
}

struct User: Identifiable, Codable {
  @DocumentID var id: String
  var name: String
}

ログインするとコメントできます