ホームページ > ウェブフロントエンド > jsチュートリアル > Cloud Firestore でサブコレクション名のリストを取得するにはどうすればよいですか?

Cloud Firestore でサブコレクション名のリストを取得するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-29 21:07:11
オリジナル
671 人が閲覧しました

How Can I Retrieve a List of Subcollection Names in Cloud Firestore?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート