これが私のデータ構造です:
Cloud FirestoreからデータにアクセスしようとしているiOSアプリがあります。完全なドキュメントの取得とドキュメントのクエリに成功しました。ただし、特定のドキュメントの特定のフィールドにアクセスする必要があります。 Firestoreから1つのフィールドの値だけをすばやく取得する呼び出しを行うにはどうすればよいですか?任意のヘルプをいただければ幸いです。
ドキュメントから単一のフィールドのみをフェッチするAPIはありません。 getDocument() を使用すると、ドキュメント全体が常にフェッチされます。これは、セキュリティルールを使用して、ドキュメント内の1つのフィールドを他のフィールドとは異なる方法で保護する方法もないことを意味します。
ネットワーク経由で送信されるデータの量を最小限に抑える場合は、メインドキュメントのサブコレクション内の独自のドキュメントにその単一のフィールドを配置し、その1つのドキュメントを個別に要求できます。
こちらもご覧ください 議論のスレッド 。
これは実際には非常にシンプルで、組み込みの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")
}
}
実際に方法があります。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")
}
}
メインコレクション内に新しいプライベートコレクションを作成し、アクセスに異なるルールを設定できます。
チェック: Firebase Firestore get private fields
お役に立てば幸いです。