本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
$util.dynamodb 中的 DynamoDB 協助程式
注意
我們現在主要支援 APPSYNC_JS 執行期及其文件。請考慮在此處使用 APPSYNC_JS 執行期及其指南。
$util.dynamodb
包含協助程式方法,可讓您更輕鬆地將資料寫入和讀取至 Amazon DynamoDB ,例如自動類型映射和格式。這些方法旨在將 原始類型和清單自動映射至適當的 DynamoDB 輸入格式,這是 格式 Map
的 { "TYPE" : VALUE }
。
例如,先前在 DynamoDB 中建立新項目的請求映射範本可能看起來像這樣:
{ "version" : "2017-02-28", "operation" : "PutItem", "key": { "id" : { "S" : "$util.autoId()" } }, "attributeValues" : { "title" : { "S" : $util.toJson($ctx.args.title) }, "author" : { "S" : $util.toJson($ctx.args.author) }, "version" : { "N", $util.toJson($ctx.args.version) } } }
如果我們想要將欄位新增到物件,必須在結構描述中更新 GraphQL 查詢和要求映射範本。但是,我們現在可以重組請求映射範本,以便其自動擷取在我們的結構描述中新增的新欄位,並將其新增至具有正確類型的 DynamoDB:
{ "version" : "2017-02-28", "operation" : "PutItem", "key": { "id" : $util.dynamodb.toDynamoDBJson($util.autoId()) }, "attributeValues" : $util.dynamodb.toMapValuesJson($ctx.args) }
在上一個範例中,我們使用$util.dynamodb.toDynamoDBJson(...)
協助程式自動取得產生的 ID,並將其轉換為字串屬性的 DynamoDB 表示法。然後,我們會取得所有引數,並將其轉換為其 DynamoDB 表示法,並將其輸出至範本中的 attributeValues
欄位。
每個協助程式有兩個版本:傳回物件的版本 (例如 $util.dynamodb.toString(...)
),以及將物件傳回為JSON字串的版本 (例如 $util.dynamodb.toStringJson(...)
)。在上一個範例中,我們使用將資料傳回為JSON字串的版本。如果您想要在範本使用物件之前,對物件進行操作,可以選擇傳回物件,如下所示:
{ "version" : "2017-02-28", "operation" : "PutItem", "key": { "id" : $util.dynamodb.toDynamoDBJson($util.autoId()) }, #set( $myFoo = $util.dynamodb.toMapValues($ctx.args) ) #set( $myFoo.version = $util.dynamodb.toNumber(1) ) #set( $myFoo.timestamp = $util.dynamodb.toString($util.time.nowISO8601())) "attributeValues" : $util.toJson($myFoo) }
在上一個範例中,我們將傳回轉換的引數作為映射而非JSON字串,然後新增 version
和 timestamp
欄位,最後再使用 將它們輸出到範本中的attributeValues
欄位$util.toJson(...)
。
每個協助程式的JSON版本相當於在 中包裝非JSON 版本$util.toJson(...)
。例如,下列陳述式完全相同:
$util.toStringJson("Hello, World!") $util.toJson($util.toString("Hello, World!"))
toDynamo資料庫
-
$util.dynamodb.toDynamoDB(Object) : Map
-
DynamoDB 的一般物件轉換工具,可將輸入物件轉換為適當的 DynamoDB 表示法。它在代表一些類型的方式上是固定的:例如,它會使用清單 (「L」) 而不是集合 (「SS」、「NS」、「BS」)。這會傳回描述 DynamoDB 屬性值的物件。
字串範例
Input: $util.dynamodb.toDynamoDB("foo") Output: { "S" : "foo" }
號碼範例
Input: $util.dynamodb.toDynamoDB(12345) Output: { "N" : 12345 }
布林值範例
Input: $util.dynamodb.toDynamoDB(true) Output: { "BOOL" : true }
清單範例
Input: $util.dynamodb.toDynamoDB([ "foo", 123, { "bar" : "baz" } ]) Output: { "L" : [ { "S" : "foo" }, { "N" : 123 }, { "M" : { "bar" : { "S" : "baz" } } } ] }
地圖範例
Input: $util.dynamodb.toDynamoDB({ "foo": "bar", "baz" : 1234, "beep": [ "boop"] }) Output: { "M" : { "foo" : { "S" : "bar" }, "baz" : { "N" : 1234 }, "beep" : { "L" : [ { "S" : "boop" } ] } } }
$util.dynamodb.toDynamoDBJson(Object) : String
-
與 相同
$util.dynamodb.toDynamoDB(Object) : Map
,但 會將 DynamoDB 屬性值傳回為JSON編碼字串。
toString utils
$util.dynamodb.toString(String) : String
-
將輸入字串轉換為 DynamoDB 字串格式。這會傳回描述 DynamoDB 屬性值的物件。
Input: $util.dynamodb.toString("foo") Output: { "S" : "foo" }
-
$util.dynamodb.toStringJson(String) : Map
-
與 相同
$util.dynamodb.toString(String) : String
,但 會將 DynamoDB 屬性值傳回為JSON編碼字串。 -
$util.dynamodb.toStringSet(List<String>) : Map
-
將包含字串的清單轉換為 DynamoDB 字串集格式。這會傳回描述 DynamoDB 屬性值的物件。
Input: $util.dynamodb.toStringSet([ "foo", "bar", "baz" ]) Output: { "SS" : [ "foo", "bar", "baz" ] }
-
$util.dynamodb.toStringSetJson(List<String>) : String
-
與 相同
$util.dynamodb.toStringSet(List<String>) : Map
,但 會將 DynamoDB 屬性值傳回為JSON編碼字串。
toNumber utils
-
$util.dynamodb.toNumber(Number) : Map
-
將數字轉換為 DynamoDB 數字格式。這會傳回描述 DynamoDB 屬性值的物件。
Input: $util.dynamodb.toNumber(12345) Output: { "N" : 12345 }
-
$util.dynamodb.toNumberJson(Number) : String
-
與 相同
$util.dynamodb.toNumber(Number) : Map
,但 會將 DynamoDB 屬性值傳回為JSON編碼字串。 -
$util.dynamodb.toNumberSet(List<Number>) : Map
-
將數字清單轉換為 DynamoDB 數字集格式。這會傳回描述 DynamoDB 屬性值的物件。
Input: $util.dynamodb.toNumberSet([ 1, 23, 4.56 ]) Output: { "NS" : [ 1, 23, 4.56 ] }
-
$util.dynamodb.toNumberSetJson(List<Number>) : String
-
與 相同
$util.dynamodb.toNumberSet(List<Number>) : Map
,但 會將 DynamoDB 屬性值傳回為JSON編碼字串。
toBinary utils
-
$util.dynamodb.toBinary(String) : Map
-
將編碼為 base64 字串的二進位資料轉換為 DynamoDB 二進位格式。這會傳回描述 DynamoDB 屬性值的物件。
Input: $util.dynamodb.toBinary("foo") Output: { "B" : "foo" }
-
$util.dynamodb.toBinaryJson(String) : String
-
與 相同
$util.dynamodb.toBinary(String) : Map
,但 會將 DynamoDB 屬性值傳回為JSON編碼字串。 -
$util.dynamodb.toBinarySet(List<String>) : Map
-
將編碼為 base64 字串的二進位資料清單轉換為 DynamoDB 二進位集格式。這會傳回描述 DynamoDB 屬性值的物件。
Input: $util.dynamodb.toBinarySet([ "foo", "bar", "baz" ]) Output: { "BS" : [ "foo", "bar", "baz" ] }
-
$util.dynamodb.toBinarySetJson(List<String>) : String
-
與 相同
$util.dynamodb.toBinarySet(List<String>) : Map
,但 會將 DynamoDB 屬性值傳回為JSON編碼字串。
toBoolean utils
-
$util.dynamodb.toBoolean(Boolean) : Map
-
將布林值轉換為適當的 DynamoDB 布林值格式。這會傳回描述 DynamoDB 屬性值的物件。
Input: $util.dynamodb.toBoolean(true) Output: { "BOOL" : true }
-
$util.dynamodb.toBooleanJson(Boolean) : String
-
與 相同
$util.dynamodb.toBoolean(Boolean) : Map
,但 會將 DynamoDB 屬性值傳回為JSON編碼字串。
toNull utils
-
$util.dynamodb.toNull() : Map
-
傳回 DynamoDB null 格式的 null。這會傳回描述 DynamoDB 屬性值的物件。
Input: $util.dynamodb.toNull() Output: { "NULL" : null }
-
$util.dynamodb.toNullJson() : String
-
與 相同
$util.dynamodb.toNull() : Map
,但 會將 DynamoDB 屬性值傳回為JSON編碼字串。
toList utils
$util.dynamodb.toList(List) : Map
-
將物件清單轉換為 DynamoDB 清單格式。清單中的每個項目也會轉換為適當的 DynamoDB 格式。它在代表一些巢狀物件的方式上是固定的:例如,它會使用清單 (「L」) 而不是集合 (「SS」、「NS」、「BS」)。這會傳回描述 DynamoDB 屬性值的物件。
Input: $util.dynamodb.toList([ "foo", 123, { "bar" : "baz" } ]) Output: { "L" : [ { "S" : "foo" }, { "N" : 123 }, { "M" : { "bar" : { "S" : "baz" } } } ] }
-
$util.dynamodb.toListJson(List) : String
-
與 相同
$util.dynamodb.toList(List) : Map
,但 會將 DynamoDB 屬性值傳回為JSON編碼字串。
toMap utils
-
$util.dynamodb.toMap(Map) : Map
-
將映射轉換為 DynamoDB 映射格式。映射中的每個值也會轉換為適當的 DynamoDB 格式。它在代表一些巢狀物件的方式上是固定的:例如,它會使用清單 (「L」) 而不是集合 (「SS」、「NS」、「BS」)。這會傳回描述 DynamoDB 屬性值的物件。
Input: $util.dynamodb.toMap({ "foo": "bar", "baz" : 1234, "beep": [ "boop"] }) Output: { "M" : { "foo" : { "S" : "bar" }, "baz" : { "N" : 1234 }, "beep" : { "L" : [ { "S" : "boop" } ] } } }
-
$util.dynamodb.toMapJson(Map) : String
-
與 相同
$util.dynamodb.toMap(Map) : Map
,但 會將 DynamoDB 屬性值傳回為JSON編碼字串。 -
$util.dynamodb.toMapValues(Map) : Map
-
建立地圖的副本,其中每個值都已轉換為適當的 DynamoDB 格式。它在代表一些巢狀物件的方式上是固定的:例如,它會使用清單 (「L」) 而不是集合 (「SS」、「NS」、「BS」)。
Input: $util.dynamodb.toMapValues({ "foo": "bar", "baz" : 1234, "beep": [ "boop"] }) Output: { "foo" : { "S" : "bar" }, "baz" : { "N" : 1234 }, "beep" : { "L" : [ { "S" : "boop" } ] } }
注意
這與 略有不同,
$util.dynamodb.toMap(Map) : Map
因為它只會傳回 DynamoDB 屬性值的內容,但不會傳回整個屬性值本身。例如,下列陳述式完全相同:$util.dynamodb.toMapValues($map) $util.dynamodb.toMap($map).get("M")
-
$util.dynamodb.toMapValuesJson(Map) : String
-
與 相同
$util.dynamodb.toMapValues(Map) : Map
,但 會將 DynamoDB 屬性值傳回為JSON編碼字串。
S3Object 公用程式
-
$util.dynamodb.toS3Object(String key, String bucket, String region) : Map
-
將金鑰、儲存貯體和區域轉換為 DynamoDB S3 物件表示法。這會傳回描述 DynamoDB 屬性值的物件。
Input: $util.dynamodb.toS3Object("foo", "bar", region = "baz") Output: { "S" : "{ \"s3\" : { \"key\" : \"foo", \"bucket\" : \"bar", \"region\" : \"baz" } }" }
-
$util.dynamodb.toS3ObjectJson(String key, String bucket, String region) : String
-
與 相同
$util.dynamodb.toS3Object(String key, String bucket, String region) : Map
,但 會將 DynamoDB 屬性值傳回為JSON編碼字串。 -
$util.dynamodb.toS3Object(String key, String bucket, String region, String version) : Map
-
將金鑰、儲存貯體、區域和選用版本轉換為 DynamoDB S3 物件表示法。這會傳回描述 DynamoDB 屬性值的物件。
Input: $util.dynamodb.toS3Object("foo", "bar", "baz", "beep") Output: { "S" : "{ \"s3\" : { \"key\" : \"foo\", \"bucket\" : \"bar\", \"region\" : \"baz\", \"version\" = \"beep\" } }" }
-
$util.dynamodb.toS3ObjectJson(String key, String bucket, String region, String version) : String
-
與 相同
$util.dynamodb.toS3Object(String key, String bucket, String region, String version) : Map
,但 會將 DynamoDB 屬性值傳回為JSON編碼字串。 -
$util.dynamodb.fromS3ObjectJson(String) : Map
-
接受 DynamoDB S3 物件的字串值,並傳回包含金鑰、儲存貯體、區域和選用版本的映射。
Input: $util.dynamodb.fromS3ObjectJson({ "S" : "{ \"s3\" : { \"key\" : \"foo\", \"bucket\" : \"bar\", \"region\" : \"baz\", \"version\" = \"beep\" } }" }) Output: { "key" : "foo", "bucket" : "bar", "region" : "baz", "version" : "beep" }