Google Cloud Firestore 확장 프로그램

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

버전: 1.2.0

Cloud Firestore 데이터베이스에서 데이터를 만들거나 읽거나 삭제합니다.

이 콘텐츠는 이 확장 프로그램을 구성하고 사용하기 위한 참조를 제공합니다. API 프록시에서 이 확장 프로그램을 사용하려면 다음을 수행해야 합니다.

  1. 데이터가 저장되는 Firebase Console에서 Firebase 프로젝트를 만듭니다.

  2. 서비스 계정의 키를 생성합니다.

  3. 구성 참조를 사용하여 확장 프로그램을 추가 및 구성할 때 결과 키 JSON 파일의 콘텐츠를 사용합니다.

Cloud Firestore 정보

Cloud Firestore는 컬렉션에 저장되는 문서에 데이터를 저장합니다. 문서에 데이터를 처음 추가하면 Cloud Firestore에서 암시적으로 컬렉션과 문서를 만듭니다. 컬렉션이나 문서를 명시적으로 만들 필요가 없습니다.

Cloud Firestore에 대한 일반적인 정보는 Cloud Firestore 문서의 Firestore 시작하기를 참조하세요.

샘플

다음 예시는 Extension콜아웃 정책을 사용하여 Cloud Firestore 확장 프로그램 작업 지원을 구성하는 방법을 보여줍니다.

데이터 추가

다음 확장 콜아웃 정책freewill@example.com라는 문서를 users 컬렉션에 추가합니다. data 속성은 새 문서의 필드와 값을 지정합니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Add-User-Data">
    <DisplayName>Add User Data</DisplayName>
    <Connector>my-cloud-firestore-extension</Connector>
    <Action>setDocument</Action>
    <Input><![CDATA[{
        "colName" : "users",
        "docName" : "freewill@example.com",
        "data" : {
            "firstName": "Will",
            "lastName": "Witman",
            "address": "270-8243 Tempor St.",
            "city": "Fort Worth",
            "region": "TX",
            "postalCode": "86519",
            "email": "freewill@example.com",
            "username": "freewill444"
        }
    }]]></Input>
</ConnectorCallout>

데이터 가져오기

이 예에서 확장 콜아웃 정책users 컬렉션에서 freewill@example.com 문서의 값을 가져옵니다. 여기서 <Output> 요소의 parsed 속성은 false로 설정되므로 반환되는 결과는 객체로 파싱된 JSON이 아닌 JSON 문자열이 됩니다. 자세한 내용은 <Output> 요소 참조를 참고하세요.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Get-User-Data">
    <DisplayName>Get User Data</DisplayName>
    <Connector>straut-cloud-firestore-extension</Connector>
    <Action>getDocument</Action>
    <Input><![CDATA[{
        "colName" : "users",
        "docName" : "freewill@example.com"
    }]]></Input>
    <Output parsed="false">firestore.userdata.retrieved</Output>
</ConnectorCallout>

다음 Assign Message 정책은 확장 프로그램의 응답을 저장하는 변수 값을 사용하여 응답 페이로드를 할당합니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage name="CopyUserDataToResponse">
    <DisplayName>Copy User Data To Response</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{firestore.userdata.retrieved}</Payload>
    </Set>
</AssignMessage>

데이터 삭제

이 예에서 Extension콜아웃 정책users 컬렉션에서 lizzie@example.com 문서를 삭제합니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Delete-User-Data">
    <DisplayName>Delete User Data</DisplayName>
    <Connector>my-cloud-firestore-extension</Connector>
    <Action>deleteDocument</Action>
    <Input><![CDATA[{
        "colName" : "users",
        "docName" : "lizzie@example.com"
    }]]></Input>
</ConnectorCallout>

데이터 쿼리

이 예에서 확장 콜아웃 정책cities 컬렉션을 쿼리합니다. 쿼리 결과는 statepopulation 필드로 필터링됩니다. 여기서 <Output> 요소의 parsed 속성은 false로 설정되므로 반환되는 결과는 객체로 파싱된 JSON이 아닌 JSON 문자열이 됩니다. 자세한 내용은 <Output> 요소 참조를 참고하세요.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Query-City-Data">
    <DisplayName>Query City Data</DisplayName>
    <Connector>cloud-firestore-extension</Connector>
    <Action>query</Action>
    <Input><![CDATA[{
        "colName":"cities",
        "queryArray":[
          ["state", "==", "CA"],
          ["population","<",1000000]
        ]
    }]]></Input>
    <Output parsed="false">compound-query-output</Output>
</ConnectorCallout>

다음 Assign Message 정책은 확장 프로그램의 응답을 저장하는 변수 값을 사용하여 응답 페이로드를 할당합니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage name="CopyQueryResultsToResponse">
    <DisplayName>Copy Query Results To Response</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{firestore.querydata.retrieved}</Payload>
    </Set>
</AssignMessage>

작업

deleteDocument

컬렉션에서 단일 문서를 삭제합니다.

요청 매개변수

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name"
}]]></Input>
매개변수 설명 유형 기본 계정 필수
colName 삭제할 문서가 포함된 컬렉션의 이름입니다. 문자열 없음 예.
docName 삭제할 문서의 이름입니다. 문자열 없음 예.

응답

없음

getDocument

단일 문서의 콘텐츠를 검색합니다.

요청 매개변수

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name"
}]]></Input>
매개변수 설명 유형 기본 계정 필수
colName 문서를 검색할 컬렉션의 이름입니다. 문자열 없음 예.
docName 검색할 문서의 이름입니다. 문자열 없음 예.

응답

JSON 형식의 문서 콘텐츠가 포함된 객체입니다.

쿼리

필터를 구성하는 조건을 지정하여 컬렉션을 쿼리합니다.

이 작업의 queryArray 매개변수는 배열의 배열 (또는 필터링 조건이 없는 경우 빈 배열)을 지정합니다. 각 내부 배열은 필터 조건을 지정합니다. 여러 내부 배열은 AND 연산자로 결합된 여러 조건을 나타냅니다.

내부 조건 배열의 각 요소는 조건의 일부를 나타냅니다. 조건 배열에는 항상 다음 세 가지 요소가 있습니다.

  • 컬렉션 필드를 지정하는 왼쪽 요소입니다.
  • 연산자를 지정하는 중간 요소입니다.
  • 컬렉션 필드 값을 지정하는 오른쪽 요소.

다음 예시에서는 컬렉션의 statepopulation 필드를 기준으로 필터링할 두 개의 조건 배열을 지정합니다.

<Input><![CDATA[{
  "colName":"cities",
  "queryArray":[
    ["state", "==", "CA"],
    ["population","<",1000000]
  ]
}]]></Input>

런타임 시 이 작업은 다음과 같은 쿼리로 해석됩니다.

주가 'CA'이고 인구가 1000000 미만인 도시를 모두 선택하세요.

여러 조건이 포함된 쿼리는 Cloud Firestore에서 복합 색인으로 지원해야 합니다. 자세한 내용은 Cloud Firestore의 색인 유형을 참조하세요.

요청 매개변수

문법

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "queryArray" : "queryArray": query-condition-array
}]]></Input>

이 예시에서 queryArray 매개변수는 colName 매개변수로 지정된 cities 컬렉션을 필터링할 두 가지 조건을 지정합니다.

여러 조건이 포함된 쿼리는 Cloud Firestore에서 복합 색인으로 지원해야 합니다. 자세한 내용은 Cloud Firestore의 색인 유형을 참조하세요.

<Input><![CDATA[{
  "colName":"cities",
  "queryArray":[["state", "==", "CA"],["population","<",1000000]]
}]]></Input>

런타임 시 이 작업은 다음과 같은 쿼리로 해석됩니다.

주가 'CA'이고 인구가 1000000 미만인 도시를 모두 선택하세요.

매개변수 설명 유형 기본 계정 필수
colName 쿼리할 컬렉션의 이름입니다. 문자열 없음 예.
queryArray 필터의 일부를 함께 지정하는 조건 배열의 배열입니다. 조건을 생략하려면 빈 배열을 지정합니다 (결과 필터링 아님). 배열 없음 예.

응답

JSON 형식의 문서 콘텐츠가 포함된 객체입니다.

setDocument

문서를 Cloud Firestore 컬렉션에 복사합니다. 문서가 이미 컬렉션에 있는 경우 기존 문서를 덮어씁니다.

요청 매개변수

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name",
  "data" : "data-to-copy"
}]]></Input>
매개변수 설명 유형 기본 계정 필수
colName 문서를 만들 컬렉션의 이름입니다. 문자열 없음 예.
docName data을(를) 복사해야 하는 문서의 이름입니다. 문자열 없음 예.
데이터 docName에 복사할 데이터입니다. 유효한 JSON 객체여야 합니다. 배열은 지원되지 않습니다. 객체 없음 번호

응답

없음

구성 참조

API 프록시에서 사용할 이 확장 프로그램을 구성하고 배포할 때 다음을 사용하세요. Apigee 콘솔을 사용하여 확장 프로그램을 구성하는 단계는 확장 프로그램 추가 및 구성을 참조하세요.

일반적인 확장 속성

모든 확장 프로그램에는 다음과 같은 속성이 있습니다.

속성 설명 기본 필수
name 확장 프로그램의 구성에 지정할 이름입니다. 없음 지원됨
packageName Apigee Edge에서 제공하는 확장 프로그램 패키지 이름입니다. 없음 지원됨
version 확장 프로그램을 구성하는 확장 프로그램 패키지의 버전 번호입니다. 없음 지원됨
configuration 추가하는 확장 프로그램 관련 구성 값입니다. 이 확장 프로그램 속성의 속성을 참조하세요. 없음 지원됨

이 확장 프로그램 패키지의 속성

속성 설명 기본 계정 필수
firestoreDB 이 확장 프로그램이 요청할 때 사용해야 하는 Cloud Firestore 데이터베이스의 URL입니다. 이 URL은 보통 https://DATABASE_NAME.firebaseio.com 형식을 취합니다. 없음 예.
사용자 인증 정보 Apigee Edge 콘솔에 입력하면 Firebase 안내에 따라 생성한 키 파일의 콘텐츠가 표시됩니다. 관리 API를 통해 전송되는 경우 키 파일에서 생성된 base64로 인코딩된 값입니다. 없음 예.