Google Cloud Firestore 擴充功能

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

版本:1.4.1

在 Cloud Firestore 資料庫中建立、讀取或刪除資料。

這項內容提供設定與使用這項擴充功能的參考資源。如要透過 API Proxy 使用這個擴充功能,您必須:

  1. 在儲存資料的 Firebase 控制台建立 Firebase 專案。

  2. 為服務帳戶產生金鑰

  3. 使用設定參考資料新增及設定擴充功能時,請使用產生的金鑰 JSON 檔案內容。

關於 Cloud Firestore

Cloud Firestore 會將資料儲存在文件中,而這些文件會儲存在集合中。在您第一次將資料新增至文件時,Cloud Firestore 會以隱含方式建立集合和文件。您不需要明確建立集合或文件。

如要進一步瞭解 Cloud Firestore 的一般資訊,請參閱 Cloud Firestore 說明文件中的開始使用 Firestore

範例

以下範例說明如何透過 Extension callout 政策,為 Cloud Firestore 擴充功能動作設定支援。

新增資料

下列 Extension callout 政策會將名為 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>

取得資料

在這個範例中,Extension callout 政策會從 users 集合擷取 freewill@example.com 文件的值。在這裡,<Output> 元素的 parsed 屬性會設為 false,因此傳回的結果會是 JSON 做為字串,而非 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>

下列「指派訊息」政策會使用儲存擴充功能回應的變數值來指派回應酬載。

<?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 callout 政策會從 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 剖析為物件的 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>

下列「指派訊息」政策會使用儲存擴充功能回應的變數值來指派回應酬載。

<?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' 的所有城市及人口<10 萬個

如果是包含多項條件的查詢,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' 的所有城市及人口<10 萬個

參數 說明 類型 預設 必填
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 Proxy 時,請使用下列指令。如需使用 Apigee 控制台設定擴充功能的步驟,請參閱新增及設定擴充功能

常見擴充功能屬性

每個擴充功能都有下列屬性。

屬性 說明 預設 必要
name 您要為這項擴充功能設定的名稱。 相容
packageName Apigee Edge 指定的擴充功能套件名稱。 相容
version 擴充功能的擴充功能套件版本號碼。 相容
configuration 您要新增的擴充功能專屬的設定值。請參閱「這個擴充功能套件的屬性」一文 相容

這個擴充功能套件的屬性

屬性 說明 預設 必填
firestoreDB 這項擴充功能應使用 Whem 發出要求的 Cloud Firestore 資料庫的網址。這個網址通常採用 https://DATABASE_NAME.firebaseio.com 形式。 無。 是。
憑證 在 Apigee Edge 控制台中,這是您使用 Firebase 指示產生的金鑰檔案內容。透過 Management API 傳送時,這是由金鑰檔案產生的 Base64 編碼值。 無。 是。