Sistema de tipos (mapeo de solicitud)
Cuando se utiliza el solucionador de DynamoDB de AWS AppSync para llamar a sus tablas de DynamoDB, AWS AppSync debe conocer el tipo de cada valor que se va a utilizar en dicha llamada. Esto se debe a que DynamoDB admite más tipos primitivos que los disponibles en GraphQL o JSON (por ejemplo, conjuntos y datos binarios). AWS AppSync necesita indicaciones para hacer conversiones entre GraphQL y DynamoDB; de lo contrario, tendría que suponer cómo se estructuran los datos de 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 un objeto JSON que contiene un único par de 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 objeto JSON no puede tener más de un par de 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 escalares, de documento y de conjunto 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=" }Observe que el valor es en realidad una cadena que contiene la representación codificada en base64 de los datos binarios. AWS AppSync descodifica esta cadena de nuevo a su valor binario antes de enviarlo a DynamoDB. AWS AppSync utiliza el esquema de descodificación base64 como se define en RFC 2045. Cualquier carácter que no esté en el alfabeto base64 no se tiene en cuenta.
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==" ... ] }Observe que el valor es en realidad una cadena que contiene la representación codificada en base64 de los datos binarios. AWS AppSync descodifica esta cadena de nuevo a su valor binario antes de enviarlo a DynamoDB. AWS AppSync utiliza el esquema de descodificación base64 como se define en RFC 2045: cualquier carácter que no esté en el alfabeto base64 no se tiene en cuenta.
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
trueyfalseson 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.