类型系统(请求映射) - AWS AppSync

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

类型系统(请求映射)

使用 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 值用于请求映射文档中您需要指定值的任何位置。您需要这样做的一些地方包括: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 使用 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 }

请注意,只有 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 文档