Google Cloud Firestore 拡張機能

<ph type="x-smartling-placeholder"></ph> 現在、Apigee Edge のドキュメントが表示されています。
Apigee X のドキュメント
詳細

<ph type="x-smartling-placeholder">

バージョン: 1.4.1

Cloud Firestore データベースでデータの作成、読み取り、削除を行います。

ここでは、この拡張機能を構成して使用するためのリファレンスを提供します。この拡張機能を API プロキシで使用する前に、次のことを行う必要があります。

  1. データを保存する Firebase コンソールで Firebase プロジェクトを作成します。

  2. サービス アカウントのキーを生成します

  3. 拡張機能を追加および構成するときに、構成リファレンスを使用して生成されたキーの JSON ファイルの内容を使用します。

Cloud Firestore について

Cloud Firestore はデータをドキュメントに保存し、ドキュメントはコレクション内に保存されます。ユーザーが初めてドキュメントにデータを追加したときに、Cloud Firestore によってコレクションとドキュメントが暗黙的に作成されます。コレクションやドキュメントを明示的に作成する必要はありません。

Cloud Firestore の一般的な詳細については、Cloud Firestore ドキュメントの Firestore スタートガイドをご覧ください。

サンプル

次の例は、ExtensionCallout ポリシーを使用して、Cloud Firestore 拡張機能のアクションのサポートを構成する方法を示しています。

データを追加

次の ExtensionCallout ポリシーは、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>

データを取得する

この例では、ExtensionCallout ポリシーが、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>

データの削除

この例では、ExtensionCallout ポリシーによって、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>

データのクエリ

この例では、ExtensionCallout ポリシーcities コレクションに対してクエリを実行しています。クエリ結果は、state フィールドと population フィールドでフィルタされます。ここでは、<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>

操作

<ph type="x-smartling-placeholder">

deleteDocument

コレクションから 1 つのドキュメントを削除します。

リクエスト パラメータ

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name"
}]]></Input>
パラメータ 説明 デフォルト 必須
colName 削除するドキュメントを含むコレクションの名前。 文字列 なし。 はい。
docName 削除するドキュメントの名前。 文字列 なし。 はい。

レスポンス

なし。

getDocument

1 つのドキュメントの内容を取得します。

リクエスト パラメータ

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name"
}]]></Input>
パラメータ 説明 デフォルト 必須
colName ドキュメントを取得するコレクションの名前。 文字列 なし。 はい。
docName 取得するドキュメントの名前。 文字列 なし。 はい。

レスポンス

JSON 形式のドキュメントのコンテンツを含むオブジェクト。

クエリ

フィルタを形成する条件を指定してコレクションをクエリします。

このアクションの queryArray パラメータには、配列の配列(フィルタリング条件がない場合は空の配列)を指定します。内側の各配列はフィルタの条件を指定します。複数の内部配列は、AND 演算子で結合された複数の条件を表します。

内部の条件配列内の各要素は、条件の一部を表します。条件配列には常に次の 3 つの要素があります。

  • コレクション フィールドを指定する左要素。
  • 演算子を指定する中間要素。
  • コレクションのフィールド値を指定する右要素。

次の例では、コレクションの state フィールドと population フィールドに基づいてフィルタリングする 2 つの条件配列を指定しています。

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

このアクションは、実行時に次のようなクエリとして解釈されます。

州が「CA」である都市をすべて選択してくださいと人口 <1,000,000

複数の条件を含むクエリは、Cloud Firestore で複合インデックスによってサポートされている必要があります。詳細については、Cloud Firestore のインデックス タイプをご覧ください。

リクエスト パラメータ

構文

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

この例では、queryArray パラメータで、colName パラメータで指定された cities コレクションをフィルタする条件を 2 つ指定します。

複数の条件を含むクエリは、Cloud Firestore で複合インデックスによってサポートされている必要があります。詳細については、Cloud Firestore のインデックス タイプをご覧ください。

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

このアクションは、実行時に次のようなクエリとして解釈されます。

州が「CA」である都市をすべて選択してくださいと人口 <1,000,000

パラメータ 説明 デフォルト 必須
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 です。 なし。 はい。
credentials Apigee Edge コンソールに入力する場合は、Firebase の手順で生成したキーファイルの内容です。Management API で送信する場合は、鍵ファイルから生成された base64 エンコード値です。 なし。 はい。