$util.transform 中的转换帮助程序 - Amazon AppSync
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

$util.transform 中的转换帮助程序

$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" } } ] } } ] } }

默认O运营商被假定为 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()扩展名。有关更多信息,请参阅 。扩展.

第一个参数是Map已转换为SubscriptionFilter表达式对象. T第二个论点是List以下字段名称是第一个被忽略Map构造时输入对象SubscriptionFilter表达式对象。

$util.transform.toSubscriptionFilter(Map, List, Map) : Map

转换 Map输入对象到SubscriptionFilter表达式对象。这些区域有:$util.transform.toSubscriptionFilter方法用作输入$extensions.setSubscriptionFilter()扩展名。有关更多信息,请参阅 。扩展.

第一个参数是Map已转换为SubscriptionFilter表达式对象,第二个参数是List在第一个字段名称中将被忽略Map输入对象,第三个参数是Map构造时包含的严格规则的输入对象SubscriptionFilter表达式对象。这些严格的规则包括在SubscriptionFilter表达式对象的方式至少有一个规则将满足通过订阅过滤器。

这些区域有:以下桌子 解释了如何定义以下实用程序的参数:

  • $util.transform.toSubscriptionFilter(Map) : Map

  • $util.transform.toSubscriptionFilter(Map, List) : Map

  • $util.transform.toSubscriptionFilter(Map, List, Map) : Map

Argument 1: Map

参数 1是Map具有以下键值的对象:

  • 字段名称

  • “和”

  • “或”

对于作为键的字段名称,这些字段条目的条件采用的形式为"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” 和 “或” 作为键,这意味着这些条目中的所有条目都应该根据密钥使用 AND 或 OR 逻辑来连接。关键值 “和” 和 “或” 期望有一系列条件。

"and" : [ { "field_name1" : { "operator1" : value } }, { "field_name2" : { "operator1" : value } }, . . ].

请注意,你可以巢 “和” 和 “或”. 也就是说,你可以在另一个 “和”/“或” 块中嵌套 “和”/“或” 块中。但是,这不起作用对于简单的字段。

"and" : [ { "field_name1" : { "operator" : value } }, { "or" : [ { "field_name2" : { "operator" : value } }, { "field_name3" : { "operator" : value } } ].

以下示例显示的输入:参数 1使用$util.transform.toSubscriptionFilter(Map) : Map.

输入

参数 1::Map

{ "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 } ] } ] }
Argument 2: List

参数 2包含List输入中不应考虑的字段名称Map(参数 1) 在构建SubscriptionFilter表达式对象。这些区域有:List也可以为空。

以下示例显示的输入:参数 1和参数 2使用$util.transform.toSubscriptionFilter(Map, List) : Map.

输入

参数 1::Map

{ "percentageUp": { "lte": 50, "gte": 20 }, "and": [ { "title": { "ne": "Book1" } }, { "downvotes": { "gt": 20 } } ], "or": [ { "author": { "eq": "Admin" } }, { "isPublished": { "eq": false } } ] }

参数 2:列表:

["percentageUp", "author"]

输出

结果是Map对象:

{ "filterGroup": [ { "filters": [ { "fieldName": "title", "operator": "ne", "value": "Book1" }, { "fieldName": "downvotes", "operator": "gt", "value": 20 }, { "fieldName": "isPublished", "operator": "eq", "value": false } ] } ] }
Argument 3: Map

参数 3是Map宾语那个将字段名称作为键值(不能有 “and” 或 “或”)。对于作为键的字段名称,这些字段的条件是以"operator" : "value". 不像参数 1、参数 3在同一个密钥中不能有多个条件。此外,参数 3没有 “and” 或 “or” 条款,因此也不涉及嵌套。

参数 3表示严格规则的列表,这些规则被添加到SubscriptionFilter表达式对象所以那个至少有一个以下条件是见面通过过滤器。

{ "fieldname1": { "operator": value }, "fieldname2": { "operator": value } } . . .

以下示例显示的输入:参数 1参数 2, 和参数 3使用$util.transform.toSubscriptionFilter(Map, List, Map) : Map.

输入

参数 1::Map

{ "percentageUp": { "lte": 50, "gte": 20 }, "and": [ { "title": { "ne": "Book1" } }, { "downvotes": { "lt": 20 } } ], "or": [ { "author": { "eq": "Admin" } }, { "isPublished": { "eq": false } } ] }

参数 2:列表:

["percentageUp", "author"]

参数 3::Map

{ "upvotes": { "gte": 250 }, "author": { "eq": "Person1" } }

输出

结果是Map对象:

{ "filterGroup": [ { "filters": [ { "fieldName": "title", "operator": "ne", "value": "Book1" }, { "fieldName": "downvotes", "operator": "gt", "value": 20 }, { "fieldName": "isPublished", "operator": "eq", "value": false }, { "fieldName": "upvotes", "operator": "gte", "value": 250 } ] }, { "filters": [ { "fieldName": "title", "operator": "ne", "value": "Book1" }, { "fieldName": "downvotes", "operator": "gt", "value": 20 }, { "fieldName": "isPublished", "operator": "eq", "value": false }, { "fieldName": "author", "operator": "eq", "value": "Person1" } ] } ] }