Sistema de tipos (mapeo de solicitud) - AWS AppSync

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Sistema de tipos (mapeo de solicitud)

Al utilizar el solucionador de AWS AppSync DynamoDB para llamar a las tablas de DynamoDB AWS AppSync , necesita saber el tipo de cada valor que se va a utilizar en esa llamada. Esto se debe a que DynamoDB admite más primitivas de tipos que GraphQL JSON o (como conjuntos y datos binarios). AWS AppSync necesita algunas sugerencias al traducir entre GraphQL y DynamoDB; de lo contrario, tendría que hacer algunas suposiciones sobre cómo se estructuran los datos en la tabla.

Para obtener más información sobre los tipos de datos de DynamoDB, consulte la documentación relativa a los descriptores de tipos de datos y los tipos de datos de DynamoDB.

Un valor de DynamoDB se representa mediante JSON un objeto que contiene un único par clave-valor. La clave especifica el tipo de DynamoDB y el valor especifica el valor en sí. En el siguiente ejemplo, la clave S indica que el valor es una cadena y el valor identifier es el valor de la cadena en sí.

{ "S" : "identifier" }

Tenga en cuenta que el JSON objeto no puede tener más de un par clave-valor. Si se especifica más de un par de clave-valor, el documento de mapeo de solicitudes no se analizará.

Siempre que necesite especificar un valor en un documento de mapeo de solicitudes, deberá usar un valor de DynamoDB. Entre los lugares donde necesitará realizar esta operación figuran: las secciones key y attributeValue, y la sección expressionValues de secciones de expresión. En el siguiente ejemplo, el valor de cadena de DynamoDB identifier se asigna al campo id de una sección key (tal vez en un documento de mapeo de solicitudes GetItem).

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

Tipos admitidos

AWS AppSync admite los siguientes tipos de escalares, documentos y conjuntos de DynamoDB:

Tipo cadena S

Un valor de cadena único. Un valor de cadena de DynamoDB se indica de la siguiente manera:

{ "S" : "some string" }

Ejemplo de uso:

"key" : { "id" : { "S" : "some string" } }
Tipo de conjunto de cadenas SS

Un conjunto de valores de cadena. Un valor de conjunto de cadenas de DynamoDB se indica de la siguiente manera:

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

Ejemplo de uso:

"attributeValues" : { "phoneNumbers" : { "SS" : [ "+1 555 123 4567", "+1 555 234 5678" ] } }
Tipo número N

Un valor numérico único. Un valor de número de DynamoDB se indica de la siguiente manera:

{ "N" : 1234 }

Ejemplo de uso:

"expressionValues" : { ":expectedVersion" : { "N" : 1 } }
Tipo conjunto de números NS

Conjunto de valores de número. Un valor de conjunto de números de DynamoDB se indica de la siguiente manera:

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

Ejemplo de uso:

"attributeValues" : { "sensorReadings" : { "NS" : [ 67.8, 12.2, 70 ] } }
Tipo binario B

Un valor binario. Un valor binario de DynamoDB se indica de la siguiente manera:

{ "B" : "SGVsbG8sIFdvcmxkIQo=" }

Tenga en cuenta que el valor es en realidad una cadena, donde la cadena es la representación codificada en base64 de los datos binarios. AWS AppSync decodifica esta cadena de nuevo en su valor binario antes de enviarla a DynamoDB. AWS AppSync utiliza el esquema de decodificación base64 definido en RFC 2045: se ignora cualquier carácter que no esté en el alfabeto base64.

Ejemplo de uso:

"attributeValues" : { "binaryMessage" : { "B" : "SGVsbG8sIFdvcmxkIQo=" } }
Tipo conjunto binario BS

Conjunto de valores binarios. Un valor de conjunto binario de DynamoDB se indica de la siguiente manera:

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

Tenga en cuenta que el valor es en realidad una cadena, donde la cadena es la representación codificada en base64 de los datos binarios. AWS AppSync decodifica esta cadena de nuevo en su valor binario antes de enviarla a DynamoDB. AWS AppSync utiliza el esquema de decodificación base64 definido en RFC 2045: se ignora cualquier carácter que no esté en el alfabeto base64.

Ejemplo de uso:

"attributeValues" : { "binaryMessages" : { "BS" : [ "SGVsbG8sIFdvcmxkIQo=", "SG93IGFyZSB5b3U/Cg==" ] } }
Tipo booleano BOOL

Un valor booleano. Un valor booleano de DynamoDB se indica de la siguiente manera:

{ "BOOL" : true }

Observe que solo los valores true y false son válidos.

Ejemplo de uso:

"attributeValues" : { "orderComplete" : { "BOOL" : false } }
Tipo lista L

Lista del resto de valores de DynamoDB admitidos. Un valor de lista de DynamoDB se indica de la siguiente manera:

{ "L" : [ ... ] }

Observe que se trata de un valor compuesto, y que la lista puede contener cero o más de cualquiera de los valores de DynamoDB admitidos (incluidas otras listas). La lista también puede contener una combinación de diferentes tipos.

Ejemplo de uso:

{ "L" : [ { "S" : "A string value" }, { "N" : 1 }, { "SS" : [ "Another string value", "Even more string values!" ] } ] }
Tipo de mapa M

Representa una colección sin ordenar de pares de clave-valor de otros valores de DynamoDB admitidos. Un valor de mapa de DynamoDB se indica de la siguiente manera:

{ "M" : { ... } }

Observe que un mapa puede contener cero o más pares clave-valor. La clave tiene que ser una cadena y el valor puede ser cualquier valor de DynamoDB admitido (incluidos otros mapas). El mapa también puede contener una combinación de diferentes tipos.

Ejemplo de uso:

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

Un valor nulo. Un valor nulo de DynamoDB se indica de la siguiente manera:

{ "NULL" : null }

Ejemplo de uso:

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

Para obtener más información sobre cada tipo, consulte la documentación de DynamoDB.