기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
확장 프로그램
참고
이제 우리는 주로 APPSYNC_JS 런타임과 해당 문서를 지원합니다. 여기에서 APPSYNC_JS 런타임과 해당 안내서를 사용해 보세요.
$extensions에는 해석기 내에서 추가 작업을 수행할 수 있는 일련의 메서드가 있습니다.
$extensions.evictFromApiCache(String, String, Object) : Object-
AWS AppSync 서버 측 캐시에서 항목을 제거합니다. 첫 번째 인수는 형식 이름입니다. 두 번째 인수는 필드 이름입니다. 세 번째 인수는 캐싱 키 값을 지정하는 키-값 쌍 항목을 포함하는 객체입니다. 캐시된 해석기의
cachingKey에 있는 캐싱 키와 동일한 순서로 객체에 항목을 넣어야 합니다.참고
이 유틸리티는 뮤테이션에만 작동하고 쿼리에는 작동하지 않습니다.
$extensions.setSubscriptionFilter(filterJsonObject)-
향상된 구독 필터를 정의합니다. 각 구독 알림 이벤트는 제공된 구독 필터에 대해 평가되고 모든 필터가
true로 평가되면 클라이언트에 알림을 전달합니다. 인수는 다음 섹션에 설명된 대로filterJsonObject입니다.참고
이 확장 메서드는 구독 해석기의 응답 매핑 템플릿에서만 사용할 수 있습니다.
$extensions.setSubscriptionInvalidationFilter(filterJsonObject)-
구독 무효화 필터를 정의합니다. 구독 필터는 무효화 페이로드에 대해 평가된 후 필터가
true로 평가되면 지정된 구독을 무효화합니다. 인수는 다음 섹션에 설명된 대로filterJsonObject입니다.참고
이 확장 메서드는 구독 해석기의 응답 매핑 템플릿에서만 사용할 수 있습니다.
$extensions.invalidateSubscriptions(invalidationJsonObject)-
뮤테이션으로부터 구독 무효화를 시작하는 데 사용됩니다. 인수는 다음 섹션에 설명된 대로
invalidationJsonObject입니다.참고
이 확장은 뮤테이션 해석기의 응답 매핑 템플릿에서만 사용할 수 있습니다.
단일 요청에서 고유한
$extensions.invalidateSubscriptions()메서드 직접 호출을 최대 5개까지만 사용할 수 있습니다. 이 한도를 초과할 경우 GraphQL 오류가 발생합니다.
인수: filterJsonObject
JSON 객체는 구독 또는 무효화 필터를 정의합니다. filterGroup에 있는 필터 배열입니다. 각 필터는 개별 필터의 모음입니다.
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 } ] }, { "filters" : [ { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
각 필터에는 다음의 세 가지 속성이 있습니다.
-
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" }
필드: 값
값은 연산자에 따라 다른 유형일 수 있습니다.
-
단일 숫자 또는 부울
-
문자열 예제:
"test","service" -
숫자 예제:
1,2,45.75 -
부울 예제:
true,false
-
-
숫자 또는 문자열 페어
-
문자열 페어 예제:
["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 논리를 사용하여 여러 필터를 결합할 수 있습니다. 다음 예에서는 구독 알림에 값이 1인 userId 필드가 있고(AND) Admin 또는 Developer인 group 필드 값이 있는 경우 필터는 true로 평가합니다.
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
OR 로직
filterGroup 배열 내에서 여러 필터 객체를 정의하면 OR 논리를 사용하여 여러 필터를 결합할 수 있습니다. 다음 예에서는 구독 알림에 값이 1인 userId 필드가 있거나(OR) Admin 또는 Developer인 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개의 값이 있을 수 있습니다. -
in및notIn연산자에는 최대 5개의 값이 있을 수 있습니다. -
각 연결 문자열은 최대 256자입니다.
-
각 문자열 비교는 대/소문자를 구분합니다.
-
중첩된 객체 필터링은 최대 5개의 중첩 수준 필터링을 허용합니다.
-
각
filterGroup에는 최대 10개의filters가 있을 수 있습니다. 즉, OR 로직을 사용하여 최대 10개의 개별filters를 결합할 수 있습니다.-
in연산자는 OR 논리의 특별 사례입니다. 다음 예제에서는 두 가지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에서 문자열로 정의된 단일 구독은 무효화 대상으로 간주됩니다. -
payload– 무효화 필터가 해당 값에 대해true로 평가되는 경우 구독 무효화를 위한 입력으로 사용되는 키-값 쌍 목록입니다.다음 예에서는 구독 해석기에 정의된 무효화 필터가
payload값에 대해true로 평가될 때onUserDelete구독을 사용하여 구독 및 연결된 클라이언트를 무효화합니다.$extensions.invalidateSubscriptions({ "subscriptionField": "onUserDelete", "payload": { "group": "Developer" "type" : "Full-Time" } })