>웹 프론트엔드 >JS 튜토리얼 >Cloud Firestore에서 하위 컬렉션 이름 목록을 어떻게 검색할 수 있나요?

Cloud Firestore에서 하위 컬렉션 이름 목록을 어떻게 검색할 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-11-29 21:07:11677검색

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

Cloud Firestore에서 하위 컬렉션 이름에 액세스

문서의 하위 컬렉션을 나열하는 것은 Cloud Firestore의 계층 구조에 저장된 데이터를 구성하고 탐색하기 위한 일반적인 요구 사항입니다. . 그러나 클라이언트 SDK(웹, iOS 및 Android 포함)에서는 하위 컬렉션의 전체 목록을 직접 검색하는 것이 지원되지 않습니다.

클라이언트 측 제한 사항:

공식 문서에 명시된 대로 "모바일/웹 클라이언트 라이브러리에서는 컬렉션 목록을 검색하는 것이 불가능합니다." 이 디자인 선택은 주로 신뢰할 수 있는 서버 환경에서 수행되는 관리 작업에 대해 하위 컬렉션 이름에 대한 액세스를 제한하여 보안을 강화하는 것을 목표로 합니다.

클라이언트 SDK에서 문서에 액세스하면 하위 컬렉션 이름을 제외한 필드 이름과 값만 반환됩니다. . 예를 들어 다음 코드 조각은 필드 이름만 기록하고 하위 컬렉션 이름은 기록하지 않습니다.

rootRef.doc('aDocument').get()
  .then(doc => {

    // only logs [ "someField", "anotherField" ], no collections
    console.log( Object.keys(doc.data()) )
  })

서버측 솔루션:

그러나 서버에서는 Node.js와 같은 측 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.