本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
类型系统(请求映射)
使用 D AWS AppSync ynamoDB 解析器调用您的 DynamoDB 表时 AWS AppSync ,需要知道要在该调用中使用的每个值的类型。这是因为 DynamoDB 支持的类型基元比 GraphQL JSON 或(例如集合和二进制数据)还要多。 AWS AppSync 在 GraphQL 和 DynamoDB 之间进行转换时需要一些提示,否则它将不得不对表中的数据结构做出一些假设。
有关 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 使用 RFC 2045 年定义的 base64 解码方案:任何不在 base64 字母表中的字符都将被忽略。
示例用法如下:
"attributeValues" : { "binaryMessage" : { "B" : "SGVsbG8sIFdvcmxkIQo=" } }
- 二进制集类型
BS
-
一组二进制值。DynamoDB 二进制集值表示为:
{ "BS" : [ "SGVsbG8sIFdvcmxkIQo=", "SG93IGFyZSB5b3U/Cg==" ... ] }
请注意,该值实际上是一个字符串,其中字符串是二进制数据的 base64 编码表示形式。 AWS AppSync 将此字符串解码回其二进制值,然后再将其发送到 DynamoDB。 AWS AppSync 使用 RFC 2045 年定义的 base64 解码方案:任何不在 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 文档。