web-dev-qa-db-ja.com

SwiftでCloud FireStore Firebaseから特定のフィールドにアクセスする方法

これが私のデータ構造です:

data structure

Cloud FirestoreからデータにアクセスしようとしているiOSアプリがあります。完全なドキュメントの取得とドキュメントのクエリに成功しました。ただし、特定のドキュメントの特定のフィールドにアクセスする必要があります。 Firestoreから1つのフィールドの値だけをすばやく取得する呼び出しを行うにはどうすればよいですか?任意のヘルプをいただければ幸いです。

11
Kunwar Sahni

ドキュメントから単一のフィールドのみをフェッチするAPIはありません。 getDocument() を使用すると、ドキュメント全体が常にフェッチされます。これは、セキュリティルールを使用して、ドキュメント内の1つのフィールドを他のフィールドとは異なる方法で保護する方法もないことを意味します。

ネットワーク経由で送信されるデータの量を最小限に抑える場合は、メインドキュメントのサブコレクション内の独自のドキュメントにその単一のフィールドを配置し、その1つのドキュメントを個別に要求できます。

こちらもご覧ください 議論のスレッド

8
Doug Stevenson

これは実際には非常にシンプルで、組み込みのFirebase APIを使用して非常に実現可能です。

        let docRef = db.collection("users").document(name)

        docRef.getDocument(source: .cache) { (document, error) in
            if let document = document {
                let property = document.get(field)
            } else {
                print("Document does not exist in cache")
            }
        }
1
Anthony Sobo

実際に方法があります。Firebase自体によって提供されるこのサンプルコードを使用してください

let docRef = db.collection("cities").document("SF")

docRef.getDocument { (document, error) in
    if let document = document, document.exists {
        let property = document.get('fieldname')
        print("Document data: \(dataDescription)")
    } else {
        print("Document does not exist")
    }
}
0
Yash Kothari

メインコレクション内に新しいプライベートコレクションを作成し、アクセスに異なるルールを設定できます。

チェック: Firebase Firestore get private fields

お役に立てば幸いです。

0
emmanuellmota