Cloud Firestore のサブコレクション名へのアクセス
ドキュメント内のサブコレクションの一覧表示は、Cloud Firestore の階層構造に保存されているデータを整理して移動するための一般的な要件です。 。ただし、クライアント SDK (Web、iOS、Android を含む) では、サブコレクションの完全なリストの取得は直接サポートされていません。
クライアント側の制限:
公式ドキュメントに記載されているように、「モバイル/Web クライアント ライブラリではコレクションのリストを取得することはできません。」この設計上の選択は、主に信頼できるサーバー環境で実行される管理タスクに対して、サブコレクション名へのアクセスを制限することでセキュリティを強化することを目的としています。
クライアント SDK では、ドキュメントにアクセスすると、サブコレクション名を除いて、フィールド名と値のみが返されます。 。たとえば、次のコード スニペットはフィールド名のみを記録し、サブコレクション名は記録しません。
rootRef.doc('aDocument').get() .then(doc => { // only logs [ "someField", "anotherField" ], no collections console.log( Object.keys(doc.data()) ) })
サーバー側のソリューション:
ただし、サーバーではNode.js などの -side SDK では、サブコレクション名へのアクセスがサポートされています。 Node.js の場合、ListCollectionIds メソッドは、ドキュメント内のサブコレクションの名前を取得する方法を提供します。
var firestore = require('firestore.v1beta1'); var client = firestore.v1beta1({ // optional auth parameters. }); // Iterate over all elements. var formattedParent = client.anyPathPath("[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]"); client.listCollectionIds({parent: formattedParent}).then(function(responses) { var resources = responses[0]; for (var i = 0; i < resources.length; ++i) { // doThingsWith(resources[i]) } }) .catch(function(err) { console.error(err); });
このメソッドは、指定されたドキュメント内のサブコレクションの名前を表す文字列の配列を返します。
代替アプローチ:
サブコレクション名に直接アクセスする場合クライアント側の環境ではこれが重要であるため、サブコレクション名をドキュメント構造から論理的に推論または導出できるようにデータを再構築することを検討してください。このアプローチにより、制限を適切に回避できます。
以上がCloud Firestore でサブコレクション名のリストを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。