翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
拡張子
注記
現在、主に APPSYNC_JS ランタイムとそのドキュメントをサポートしています。こちら で APPSYNC_JS ランタイムとそのガイドの使用をご検討ください。
$extensions には、リゾルバー内で追加のアクションを行うためのメソッドセットが含まれています。
$extensions.evictFromApiCache(String, String, Object) : Object-
AWS AppSync サーバー側のキャッシュから項目を削除します。最初の引数は型名です。2 番目の引数はフィールド名です。3 番目の引数は、キャッシュキー値を指定するキーと値のペア項目を含むオブジェクトです。オブジェクト内の項目は、キャッシュされたリゾルバー
cachingKeyのキャッシュキーと同じ順序で配置する必要があります。注記
このユーティリティはミューテーションに対してのみ機能し、クエリには使用できません。
$extensions.setSubscriptionFilter(filterJsonObject)-
強化されたサブスクリプションフィルターを定義します。各サブスクリプション通知イベントは、提供されたサブスクリプションフィルタに対して評価され、すべてのフィルタが
trueに評価された場合、クライアントに通知を配信します。引数は以下のセクションで説明するとおりfilterJsonObjectです。注記
この拡張メソッドは、サブスクリプションリゾルバーのレスポンスマッピングテンプレートでのみ使用できます。
$extensions.setSubscriptionInvalidationFilter(filterJsonObject)-
サブスクリプション無効化フィルターを定義します。サブスクリプションフィルタは無効化ペイロードに照らして評価されてから、フィルターが
trueと評価された場合、与えられたサブスクリプションを無効にします。引数は以下のセクションで説明するとおりfilterJsonObjectです。注記
この拡張メソッドは、サブスクリプションリゾルバーのレスポンスマッピングテンプレートでのみ使用できます。
$extensions.invalidateSubscriptions(invalidationJsonObject)-
ミューテーションによるサブスクリプションの無効化を開始するために使用されます。引数は以下のセクションで説明するとおり
invalidationJsonObjectです。注記
この拡張関数はミューテーションリゾルバーのレスポンスマッピングテンプレートでのみ使用できます。
1 つのリクエストで使用できるユニークな
$extensions.invalidateSubscriptions()メソッド呼び出しは 5 つまでです。この制限を超えた場合、GraphQL エラーが表示されます。
引数: filterJsonObject
JSON オブジェクトは、サブスクリプションフィルターまたは無効化フィルターのいずれかを定義します。これは、filterGroup 内のフィルターの配列です。各フィルターは個別のフィルターの集まりです。
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 } ] }, { "filters" : [ { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
各フィルターには次の 3 つの属性があります。
-
fieldName– GraphQL スキーマフィールド。 -
operator– オペレータータイプ。 -
value– サブスクリプション通知fieldName値と比較する値。
以下は、これらの属性の割り当ての例です。
{ "fieldName" : "severity", "operator" : "le", "value" : $context.result.severity }
フィールド: fieldName
文字列タイプ fieldName は、サブスクリプション通知ペイロード内の fieldName と一致する GraphQL スキーマで定義されているフィールドを指します。一致するものが見つかると、GraphQL スキーマフィールドの value がサブスクリプション通知フィルターのフィールドの value と比較されます。次の例では、fieldName フィルターは特定の GraphQL タイプで定義された service フィールドと一致します。通知ペイロードが AWS
AppSync と等しい value のある service フィールドを含む場合、フィルタは true と評価されます:
{ "fieldName" : "service", "operator" : "eq", "value" : "AWS AppSync" }
フィールド: 値
値は演算子によって異なるタイプでもかまいません。
-
1 つの数値またはブール値
-
文字列型の例:
"test"、"service" -
数値型の例:
-
ブール型の例:
-
-
数字または文字列のペア
-
文字列ペアの例:
["test1","test2"]、["start","end"] -
数値ペアの例:
[1,4]、[67,89]、[12.45, 95.45]
-
-
数値または文字列の配列
-
文字列配列の例:
["test1","test2","test3","test4","test5"] -
数値配列の例:
[1,2,3,4,5]、[12.11,46.13,45.09,12.54,13.89]
-
フィールド演算子
大文字と小文字が区別される文字列で、以下の値を指定できます。
| 演算子 | 説明 | 可能な値型 |
|---|---|---|
| eq | Equal | integer, float, string, Boolean |
| ne | Not equal | integer, float, string, Boolean |
| le | Less than or equal | integer, float, string |
| lt | Less than | integer, float, string |
| ge | Greater than or equal | integer, float, string |
| gt | Greater than | integer, float, string |
| contains | Checks for a subsequence or value in the set. | integer, float, string |
| notContains | Checks for the absence of a subsequence or absence of a value in the set. | integer, float, string |
| beginsWith | Checks for a prefix. | string |
| in | Checks for matching elements that are in the list. | Array of integer, float, or string |
| notIn | Checks for matching elements that aren't in the list. | Array of integer, float, or string |
| between | Between two values | integer, float, string |
| containsAny | Contains common elements | integer, float, string |
次の表は、サブスクリプション通知での各オペレーターの使用法を示したものです。
AND ロジック
filterGroup 配列内の filters オブジェクト内に複数のエントリを定義することで、AND ロジックを使用して複数のフィルターを組み合わせることができます。次の例では、フィルターは、サブスクリプション通知にフィールドの値が等しく、userId フィールド値が 1 または group のいずれかであるかどうかを true に対して評価します。
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
OR ロジック
filterGroup 配列内に複数のフィルターオブジェクトを定義することで、OR ロジックを使用して複数のフィルターを組み合わせることができます。次の例では、フィルターは、サブスクリプション通知に Admin OR Developer と同等の値の userId フィールドがあるかどうか、1 またはの group フィールド値があるかどうかを true に対して評価します。
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 } ] }, { "filters" : [ { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
例外
フィルターの使用にはいくつかの制限があることに注意してください。
-
filtersオブジェクトには、フィルターごとに最大 5 つのユニークなfieldName項目を設定できます。つまり、AND ロジックを使用して最大 5 つの個別のfieldNameオブジェクトを組み合わせることができます。 -
containsAny演算子には最大 20 個の値を指定できます。 -
inandnotIn演算子には最大 5 つの値を指定できます。 -
接続文字列は最大 255 文字です。
-
文字列比較では、大文字と小文字を区別します。
-
ネストされたオブジェクトフィルタリングでは、最大 5 つのネストレベルのフィルタリングが可能です。
-
filterGroupにはそれぞれ、最大 10 個filters設定できます。つまり、OR ロジックを使用して最大 10 個filtersを組み合わせることができます。-
in演算子は OR ロジックの特殊なケースです。次の例には、次の 2 つのfiltersがあります。{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }前述のフィルターグループは次のように評価され、最大フィルター制限に加算されます。
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "eq", "value" : "Admin" } ] }, { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "eq", "value" : "Developer" } ] } ] }
-
引数: invalidationJsonObject
invalidationJsonObject では以下が定義されます。
-
subscriptionField– 無効にする GraphQL スキーマのサブスクリプション。subscriptionFieldで文字列として定義されている 1 つのサブスクリプションは無効とみなされます。 -
payload— 無効化フィルターがその値に対してtrueと評価された場合に、サブスクリプションを無効化するための入力として使用されるキーと値のペアリスト。以下の例では、サブスクリプションリゾルバーで定義された無効化フィルターが
payload値に対してtrueと評価されたとき、onUserDeleteサブスクリプションを使用してサブスクライブして接続しているクライアントを無効にします。$extensions.invalidateSubscriptions({ "subscriptionField": "onUserDelete", "payload": { "group": "Developer" "type" : "Full-Time" } })