類型系統 (請求映射) - AWS AppSync

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

類型系統 (請求映射)

使用 AWS AppSync DynamoDB 解析程式呼叫 DynamoDB 資料表時, AWS AppSync 需要知道要在該呼叫中使用的每個值類型。這是因為 DynamoDB 比 GraphQL 或 JSON(例如集和二進位資料) 支援更多類型原始詞。在 GraphQL 和 DynamoDB 之間轉換時, AWS AppSync 需要一些提示,否則必須對資料表中的資料結構做出一些假設。

如需 DynamoDB 資料類型的詳細資訊,請參閱 DynamoDB 資料類型描述符資料類型文件。

DynamoDB 值由包含單一鍵值對的JSON物件表示。金鑰指定 DynamoDB 類型,而值指定值本身。在下列範例中,S 鍵代表值是字串,identifier 值則是字串值本身。

{ "S" : "identifier" }

請注意,JSON物件不能有多個鍵值對。如果指定一個以上的索引值對,要求映射文件就不會進行剖析。

DynamoDB 值用於需要指定值的請求映射文件中的任何地方。您需要執行這項操作的一些地方包括:keyattributeValue 區段,以及表達式區段的 expressionValues 區段。在下列範例中,DynamoDB 字串值identifier正在指派給key區段中的 id 欄位 (也許在GetItem請求映射文件中)。

"key" : { "id" : { "S" : "identifier" } }

支援的類型

AWS AppSync 支援下列 DynamoDB 純量、文件和設定類型:

字串類型 S

單一字串值。DynamoDB 字串值的表示方式為:

{ "S" : "some string" }

使用範例:

"key" : { "id" : { "S" : "some string" } }
字串集類型 SS

字串值的集合。DynamoDB 字串集值以下列表示:

{ "SS" : [ "first value", "second value", ... ] }

使用範例:

"attributeValues" : { "phoneNumbers" : { "SS" : [ "+1 555 123 4567", "+1 555 234 5678" ] } }
數字類型 N

單一數值。DynamoDB 編號值的表示方式如下:

{ "N" : 1234 }

使用範例:

"expressionValues" : { ":expectedVersion" : { "N" : 1 } }
數字集類型 NS

數值的集合。DynamoDB 數字集值以下列表示:

{ "NS" : [ 1, 2.3, 4 ... ] }

使用範例:

"attributeValues" : { "sensorReadings" : { "NS" : [ 67.8, 12.2, 70 ] } }
二進位類型 B

二進位值。DynamoDB 二進位值的表示方式為:

{ "B" : "SGVsbG8sIFdvcmxkIQo=" }

請注意,該值實際上是字串,其中字串是二進位資料的 base64 編碼表示法。將此字串 AWS AppSync 傳回其二進位值,然後再傳送至 DynamoDB 。 AWS AppSync 使用 2045 年定義的 base64 RFC 解碼配置:忽略不在 base64 字母中的任何字元。

使用範例:

"attributeValues" : { "binaryMessage" : { "B" : "SGVsbG8sIFdvcmxkIQo=" } }
二進位集類型 BS

二進位值的集合。DynamoDB 二進位集值的表示方式如下:

{ "BS" : [ "SGVsbG8sIFdvcmxkIQo=", "SG93IGFyZSB5b3U/Cg==" ... ] }

請注意,該值實際上是字串,其中字串是二進位資料的 base64 編碼表示法。將此字串 AWS AppSync 傳回其二進位值,然後再將其傳送至 DynamoDB 。 AWS AppSync 使用 2045 年定義的 base64 RFC 解碼配置:忽略不在 base64 字母中的任何字元。

使用範例:

"attributeValues" : { "binaryMessages" : { "BS" : [ "SGVsbG8sIFdvcmxkIQo=", "SG93IGFyZSB5b3U/Cg==" ] } }
布林類型 BOOL

布林值。DynamoDB 布林值的表示方式如下:

{ "BOOL" : true }

請注意,只有 truefalse 為有效值。

使用範例:

"attributeValues" : { "orderComplete" : { "BOOL" : false } }
清單類型 L

任何其他支援的 DynamoDB 值清單。DynamoDB 清單值以下列方式表示:

{ "L" : [ ... ] }

請注意,該值是複合值,其中清單可包含任何支援的 DynamoDB 值 (包括其他清單) 的零或多。清單也可包含混合的不同類型。

使用範例:

{ "L" : [ { "S" : "A string value" }, { "N" : 1 }, { "SS" : [ "Another string value", "Even more string values!" ] } ] }
映射類型 M

代表其他支援 DynamoDB 值的金鑰值對的未排序集合。DynamoDB 映射值以下列表示:

{ "M" : { ... } }

請注意,映射可包含零或多個索引值對。金鑰必須是字串,且值可以是任何支援的 DynamoDB 值 (包括其他地圖)。映射也可包含混合的不同類型。

使用範例:

{ "M" : { "someString" : { "S" : "A string value" }, "someNumber" : { "N" : 1 }, "stringSet" : { "SS" : [ "Another string value", "Even more string values!" ] } } }
Null 類型 NULL

null 值。DynamoDB Null 值以下列方式表示:

{ "NULL" : null }

使用範例:

"attributeValues" : { "phoneNumbers" : { "NULL" : null } }

如需每種類型的詳細資訊,請參閱 DynamoDB 文件