기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
참고
이제 우리는 주로 APPSYNC_JS 런타임과 해당 문서를 지원합니다. 여기에서 APPSYNC_JS 런타임과 해당 안내서를 사용해 보세요.
$util.transform
에는 Amazon DynamoDB 필터 작업과 같은 데이터 소스에 대해 복잡한 작업을 더 쉽게 수행할 수 있게 해주는 도우미 메서드가 포함되어 있습니다.
변환 도우미
$util.transform.toDynamoDBFilterExpression(Map) : Map
-
입력 문자열을 DynamoDB에 사용할 필터 표현식으로 변환합니다.
Input: $util.transform.toDynamoDBFilterExpression({ "title":{ "contains":"Hello World" } }) Output: { "expression" : "contains(#title, :title_contains)" "expressionNames" : { "#title" : "title", }, "expressionValues" : { ":title_contains" : { "S" : "Hello World" } }, }
$util.transform.toElasticsearchQueryDSL(Map) : Map
-
주어진 입력을 이와 동등한 OpenSearch 쿼리 DSL 표현식으로 변환하여 JSON 문자열로 반환합니다.
Input: $util.transform.toElasticsearchQueryDSL({ "upvotes":{ "ne":15, "range":[ 10, 20 ] }, "title":{ "eq":"hihihi", "wildcard":"h*i" } }) Output: { "bool":{ "must":[ { "bool":{ "must":[ { "bool":{ "must_not":{ "term":{ "upvotes":15 } } } }, { "range":{ "upvotes":{ "gte":10, "lte":20 } } } ] } }, { "bool":{ "must":[ { "term":{ "title":"hihihi" } }, { "wildcard":{ "title":"h*i" } } ] } } ] } }
기본 연산자는 AND로 가정합니다.
변환 도우미 구독 필터
$util.transform.toSubscriptionFilter(Map) : Map
-
Map
입력 객체를SubscriptionFilter
표현식 객체로 변환합니다.$util.transform.toSubscriptionFilter
메서드는$extensions.setSubscriptionFilter()
확장에 대한 입력으로 사용됩니다. 자세한 내용은 확장을 참조하세요. $util.transform.toSubscriptionFilter(Map, List) : Map
-
Map
입력 객체를SubscriptionFilter
표현식 객체로 변환합니다.$util.transform.toSubscriptionFilter
메서드는$extensions.setSubscriptionFilter()
확장에 대한 입력으로 사용됩니다. 자세한 내용은 확장을 참조하세요.첫 번째 인수는
SubscriptionFilter
표현식 객체로 변환되는Map
입력 객체입니다. 두 번째 인수는SubscriptionFilter
표현식 객체를 구성하는 동안 첫 번째Map
입력 객체에서 무시되는 필드 이름의List
입니다. $util.transform.toSubscriptionFilter(Map, List, Map) : Map
-
Map
입력 객체를SubscriptionFilter
표현식 객체로 변환합니다.$util.transform.toSubscriptionFilter
메서드는$extensions.setSubscriptionFilter()
확장에 대한 입력으로 사용됩니다. 자세한 내용은 확장을 참조하세요.첫 번째 인수는
SubscriptionFilter
표현식 객체로 변환되는Map
입력 객체, 두 번째 인수는 첫 번째Map
입력 객체에서 무시될 필드 이름의List
, 세 번째 인수는SubscriptionFilter
표현식 객체를 구성하는 동안 포함되는 엄격한 규칙의Map
입력 객체입니다. 이러한 엄격한 규칙이SubscriptionFilter
표현식 객체에 포함되므로 최소한 하나의 규칙이 충족되어 구독 필터를 통과할 수 있습니다.
구독 필터 인수
다음 표에서는 다음 유틸리티의 인수를 정의하는 방법을 설명합니다.
-
$util.transform.toSubscriptionFilter(Map) : Map
-
$util.transform.toSubscriptionFilter(Map, List) : Map
-
$util.transform.toSubscriptionFilter(Map, List, Map) : Map
인수 1은 다음과 같은 키 값을 가진 Map
객체입니다.
-
필드 이름
-
‘and’
-
‘or’
필드 이름을 키로 사용하는 경우 해당 필드 항목의 조건은 "operator" : "value"
형식입니다.
다음 예에서는 Map
에 항목을 추가하는 방법을 보여줍니다.
"field_name" : {
"operator1" : value
}
## We can have multiple conditions for the same field_name:
"field_name" : {
"operator1" : value
"operator2" : value
.
.
.
}
필드에 두 개 이상의 조건이 있는 경우 이러한 모든 조건은 OR 연산을 사용하는 것으로 간주됩니다.
입력 Map
에 ‘and’와 ‘or’를 키로 사용할 수도 있습니다. 즉, 이들 항목 내의 모든 항목은 키에 따라 AND 또는 OR 논리를 사용하여 결합되어야 합니다. 키 값 ‘and’와 ‘or’에는 일련의 조건이 필요합니다.
"and" : [
{
"field_name1" : {
"operator1" : value
}
},
{
"field_name2" : {
"operator1" : value
}
},
.
.
].
참고로 ‘and’와 ‘or’는 중첩되지 않습니다. 즉, 다른 ‘and’/‘or’ 블록 내에 ‘and’/‘or’를 중첩할 수 있습니다. 하지만 단순한 필드에서는 작동하지 않습니다.
"and" : [
{
"field_name1" : {
"operator" : value
}
},
{
"or" : [
{
"field_name2" : {
"operator" : value
}
},
{
"field_name3" : {
"operator" : value
}
}
].
다음 예제에서는 $util.transform.toSubscriptionFilter(Map) :
Map
를 사용하여 인수 1을 입력하는 방법을 보여줍니다.
입력
인수 1: 맵:
{
"percentageUp": {
"lte": 50,
"gte": 20
},
"and": [
{
"title": {
"ne": "Book1"
}
},
{
"downvotes": {
"gt": 2000
}
}
],
"or": [
{
"author": {
"eq": "Admin"
}
},
{
"isPublished": {
"eq": false
}
}
]
}
출력
결과는 Map
객체입니다.
{
"filterGroup": [
{
"filters": [
{
"fieldName": "percentageUp",
"operator": "lte",
"value": 50
},
{
"fieldName": "title",
"operator": "ne",
"value": "Book1"
},
{
"fieldName": "downvotes",
"operator": "gt",
"value": 2000
},
{
"fieldName": "author",
"operator": "eq",
"value": "Admin"
}
]
},
{
"filters": [
{
"fieldName": "percentageUp",
"operator": "lte",
"value": 50
},
{
"fieldName": "title",
"operator": "ne",
"value": "Book1"
},
{
"fieldName": "downvotes",
"operator": "gt",
"value": 2000
},
{
"fieldName": "isPublished",
"operator": "eq",
"value": false
}
]
},
{
"filters": [
{
"fieldName": "percentageUp",
"operator": "gte",
"value": 20
},
{
"fieldName": "title",
"operator": "ne",
"value": "Book1"
},
{
"fieldName": "downvotes",
"operator": "gt",
"value": 2000
},
{
"fieldName": "author",
"operator": "eq",
"value": "Admin"
}
]
},
{
"filters": [
{
"fieldName": "percentageUp",
"operator": "gte",
"value": 20
},
{
"fieldName": "title",
"operator": "ne",
"value": "Book1"
},
{
"fieldName": "downvotes",
"operator": "gt",
"value": 2000
},
{
"fieldName": "isPublished",
"operator": "eq",
"value": false
}
]
}
]
}