本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
類型系統 (請求映射)
使用 AWS AppSync DynamoDB 解析程式呼叫 DynamoDB 資料表時, AWS AppSync 需要知道要在該呼叫中使用的每個值類型。這是因為 DynamoDB 比 GraphQL 或 JSON(例如集和二進位資料) 支援更多類型原始詞。在 GraphQL 和 DynamoDB 之間轉換時, AWS AppSync 需要一些提示,否則必須對資料表中的資料結構做出一些假設。
如需 DynamoDB 資料類型的詳細資訊,請參閱 DynamoDB 資料類型描述符和資料類型文件。
DynamoDB 值由包含單一鍵值對的JSON物件表示。金鑰指定 DynamoDB 類型,而值指定值本身。在下列範例中,S
鍵代表值是字串,identifier
值則是字串值本身。
{ "S" : "identifier" }
請注意,JSON物件不能有多個鍵值對。如果指定一個以上的索引值對,要求映射文件就不會進行剖析。
DynamoDB 值用於需要指定值的請求映射文件中的任何地方。您需要執行這項操作的一些地方包括:key
和 attributeValue
區段,以及表達式區段的 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 }
請注意,只有
true
和false
為有效值。使用範例:
"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 文件。