Brew the Mash

クラフトビール好きなITエンジニア@mashmorgan_jpの開発メモなど

【iOS】FirestoreからgetDocumentできなかった件

Swift版のFirestoreで以下のようなコードでドキュメントを取得しようとしたが何度データを登録してもドキュメントなしに落ちてしまう。。。

let db = Firestore.firestore()
db.collection("users").document("xxxxx").getDocument() { document, err in
    if let document = document, document.exists {
        // ドキュメントあり
    } else {
        // ドキュメントなし
    }
}

Firestoreのルールとか散々確認しましたが特に問題なし。

結論から言うと、コールする関数を間違えていたようです。

// NG
db.collection("users").document("xxxxx").getDocument() { document, err in
...

// OK
db.collection("users").document("xxxxx").getDocument { document, err in
...

これ、Webで検索するとほとんどのサイトでgetDocument()が使われているのでFirebase側で仕様が変わっていたみたいです。

たしかに公式サイトではOKバージョンの関数になっていました。でもこれってトラップ過ぎる。。。Google系は特に公式ドキュメントを確認しないとダメですね、という悪例でした。