<ph type="x-smartling-placeholder"></ph>
現在、Apigee Edge のドキュメントが表示されています。
Apigee X のドキュメント。 詳細
<ph type="x-smartling-placeholder">
バージョン: 1.4.1
Cloud Firestore データベースでデータの作成、読み取り、削除を行います。
ここでは、この拡張機能を構成して使用するためのリファレンスを提供します。この拡張機能を API プロキシで使用する前に、次のことを行う必要があります。
データを保存する Firebase コンソールで Firebase プロジェクトを作成します。
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 エンコード値です。 | なし。 | はい。 |