기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
참고
이제 우리는 주로 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 |
다음 테이블에는 구독 알림에서 각 연산자가 사용되는 방식이 설명되어 있습니다.
eq
연산자는 구독 알림 필드 값이 일치하고 필터 값과 엄격하게 동일하면 true
로 평가됩니다. 다음 예에서 구독 알림에 AWS
AppSync
와 동등한 값을 가진 service
필드가 있는 경우 필터는 true
로 평가합니다.
가능한 값 유형: 정수, 부동 소수점, 문자열, 부울
{
"fieldName" : "service",
"operator" : "eq",
"value" : "AWS AppSync"
}
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" } })