Aplicaciones auxiliares de DynamoDB en $util.dynamodb
nota
Ahora admitimos de forma básica el tiempo de ejecución APPSYNC_JS y su documentación. Considere la opción de utilizar el tiempo de ejecución APPSYNC_JS y sus guías aquí.
$util.dynamodb
contiene métodos auxiliares que facilitan la escritura y la lectura de datos en Amazon DynamoDB, como el mapeo y el formato automáticos de los tipos de datos. Estos métodos están diseñados para mapear automáticamente los tipos primitivos y las listas al formato de entrada de DynamoDB correspondiente, creando una estructura Map
con el formato { "TYPE" : VALUE
}
.
Por ejemplo, anteriormente, una plantilla de mapeo de solicitudes para crear un elemento nuevo en DynamoDB podía tener el siguiente aspecto:
{ "version" : "2017-02-28", "operation" : "PutItem", "key": { "id" : { "S" : "$util.autoId()" } }, "attributeValues" : { "title" : { "S" : $util.toJson($ctx.args.title) }, "author" : { "S" : $util.toJson($ctx.args.author) }, "version" : { "N", $util.toJson($ctx.args.version) } } }
Si queríamos añadir campos al objeto teníamos que actualizar la consulta de GraphQL en el esquema, y también la plantilla de mapeo de solicitud. Sin embargo, ahora podemos reestructurar nuestra plantilla de mapeo de solicitudes para que recoja automáticamente los nuevos campos de nuestro esquema y los añada a DynamoDB con los tipos correctos:
{ "version" : "2017-02-28", "operation" : "PutItem", "key": { "id" : $util.dynamodb.toDynamoDBJson($util.autoId()) }, "attributeValues" : $util.dynamodb.toMapValuesJson($ctx.args) }
En el ejemplo anterior utilizamos la aplicación auxiliar $util.dynamodb.toDynamoDBJson(...)
para que tome automáticamente el ID generado y lo convierta en la representación en DynamoDB de un atributo de cadena. A continuación, tomamos todos los argumentos, los convertimos en sus representaciones en DynamoDB y los incluimos en el campo attributeValues
de la plantilla.
Cada aplicación auxiliar tiene dos versiones: una que devuelve un objeto (por ejemplo, $util.dynamodb.toString(...)
) y otra que devuelve el objeto como una cadena JSON (por ejemplo, $util.dynamodb.toStringJson(...)
). En el ejemplo anterior, utilizamos la versión que devuelve los datos como una cadena JSON. Si desea manipular el objeto antes de usarlo en la plantilla, puede elegir que se devuelva en un objeto en su lugar, como se muestra a continuación:
{ "version" : "2017-02-28", "operation" : "PutItem", "key": { "id" : $util.dynamodb.toDynamoDBJson($util.autoId()) }, #set( $myFoo = $util.dynamodb.toMapValues($ctx.args) ) #set( $myFoo.version = $util.dynamodb.toNumber(1) ) #set( $myFoo.timestamp = $util.dynamodb.toString($util.time.nowISO8601())) "attributeValues" : $util.toJson($myFoo) }
En el ejemplo anterior devolvemos los argumentos convertidos como un mapa en lugar de una cadena JSON y después añadimos los campos version
y timestamp
antes de incluirlos finalmente en el campo attributeValues
de la plantilla mediante $util.toJson(...)
.
La versión JSON de cada una de las aplicaciones auxiliares equivale a encapsular la versión que no es de JSON en $util.toJson(...)
. Por ejemplo, las siguientes instrucciones son exactamente lo mismo:
$util.toStringJson("Hello, World!") $util.toJson($util.toString("Hello, World!"))
toDynamoDB
-
$util.dynamodb.toDynamoDB(Object) : Map
-
Herramienta de conversión general de objetos para DynamoDB que convierte objetos de entrada en la representación de DynamoDB correspondiente. Es algo inflexible en cuanto al modo en que representa algunos tipos: por ejemplo, utiliza listas ("L") en lugar de conjuntos ("SS", "NS" "BS"). Esto devuelve un objeto que describe el valor del atributo de DynamoDB.
Ejemplo de cadena
Input: $util.dynamodb.toDynamoDB("foo") Output: { "S" : "foo" }
Ejemplo de número
Input: $util.dynamodb.toDynamoDB(12345) Output: { "N" : 12345 }
Ejemplo de booleano
Input: $util.dynamodb.toDynamoDB(true) Output: { "BOOL" : true }
Ejemplo de lista
Input: $util.dynamodb.toDynamoDB([ "foo", 123, { "bar" : "baz" } ]) Output: { "L" : [ { "S" : "foo" }, { "N" : 123 }, { "M" : { "bar" : { "S" : "baz" } } } ] }
Ejemplo de mapa
Input: $util.dynamodb.toDynamoDB({ "foo": "bar", "baz" : 1234, "beep": [ "boop"] }) Output: { "M" : { "foo" : { "S" : "bar" }, "baz" : { "N" : 1234 }, "beep" : { "L" : [ { "S" : "boop" } ] } } }
$util.dynamodb.toDynamoDBJson(Object) : String
-
Lo mismo que
$util.dynamodb.toDynamoDB(Object) : Map
, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.
Utilidades toString
$util.dynamodb.toString(String) : String
-
Convierte una cadena de entrada al formato de cadena de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.
Input: $util.dynamodb.toString("foo") Output: { "S" : "foo" }
-
$util.dynamodb.toStringJson(String) : Map
-
Lo mismo que
$util.dynamodb.toString(String) : String
, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON. -
$util.dynamodb.toStringSet(List<String>) : Map
-
Convierte una lista con cadenas al formato de conjunto de cadenas de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.
Input: $util.dynamodb.toStringSet([ "foo", "bar", "baz" ]) Output: { "SS" : [ "foo", "bar", "baz" ] }
-
$util.dynamodb.toStringSetJson(List<String>) : String
-
Lo mismo que
$util.dynamodb.toStringSet(List<String>) : Map
, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.
Utilidades toNumber
-
$util.dynamodb.toNumber(Number) : Map
-
Convierte un número al formato de número de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.
Input: $util.dynamodb.toNumber(12345) Output: { "N" : 12345 }
-
$util.dynamodb.toNumberJson(Number) : String
-
Lo mismo que
$util.dynamodb.toNumber(Number) : Map
, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON. -
$util.dynamodb.toNumberSet(List<Number>) : Map
-
Convierte una lista de números al formato de conjunto de números de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.
Input: $util.dynamodb.toNumberSet([ 1, 23, 4.56 ]) Output: { "NS" : [ 1, 23, 4.56 ] }
-
$util.dynamodb.toNumberSetJson(List<Number>) : String
-
Lo mismo que
$util.dynamodb.toNumberSet(List<Number>) : Map
, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.
Utilidades toBinary
-
$util.dynamodb.toBinary(String) : Map
-
Convierte datos binarios codificados como una cadena en base64 al formato binario de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.
Input: $util.dynamodb.toBinary("foo") Output: { "B" : "foo" }
-
$util.dynamodb.toBinaryJson(String) : String
-
Lo mismo que
$util.dynamodb.toBinary(String) : Map
, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON. -
$util.dynamodb.toBinarySet(List<String>) : Map
-
Convierte una lista de datos binarios codificados como cadenas en base64 al formato de conjunto binario de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.
Input: $util.dynamodb.toBinarySet([ "foo", "bar", "baz" ]) Output: { "BS" : [ "foo", "bar", "baz" ] }
-
$util.dynamodb.toBinarySetJson(List<String>) : String
-
Lo mismo que
$util.dynamodb.toBinarySet(List<String>) : Map
, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.
Utilidades toBoolean
-
$util.dynamodb.toBoolean(Boolean) : Map
-
Convierte un valor booleano al formato booleano correspondiente de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.
Input: $util.dynamodb.toBoolean(true) Output: { "BOOL" : true }
-
$util.dynamodb.toBooleanJson(Boolean) : String
-
Lo mismo que
$util.dynamodb.toBoolean(Boolean) : Map
, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.
Utilidades toNull
-
$util.dynamodb.toNull() : Map
-
Devuelve un valor nulo con el formato nulo de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.
Input: $util.dynamodb.toNull() Output: { "NULL" : null }
-
$util.dynamodb.toNullJson() : String
-
Lo mismo que
$util.dynamodb.toNull() : Map
, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.
Utilidades toList
$util.dynamodb.toList(List) : Map
-
Convierte una lista de objetos al formato de lista de DynamoDB. Cada elemento de la lista se convierte también al formato correspondiente de DynamoDB. Es algo inflexible en cuanto al modo en que representa algunos objetos anidados: por ejemplo, utiliza listas ("L") en lugar de conjuntos ("SS", "NS" "BS"). Esto devuelve un objeto que describe el valor del atributo de DynamoDB.
Input: $util.dynamodb.toList([ "foo", 123, { "bar" : "baz" } ]) Output: { "L" : [ { "S" : "foo" }, { "N" : 123 }, { "M" : { "bar" : { "S" : "baz" } } } ] }
-
$util.dynamodb.toListJson(List) : String
-
Lo mismo que
$util.dynamodb.toList(List) : Map
, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.
Utilidades toMap
-
$util.dynamodb.toMap(Map) : Map
-
Convierte un mapa al formato de mapa de DynamoDB. Cada valor del mapa se convierte también al formato de DynamoDB correspondiente. Es algo inflexible en cuanto al modo en que representa algunos objetos anidados: por ejemplo, utiliza listas ("L") en lugar de conjuntos ("SS", "NS" "BS"). Esto devuelve un objeto que describe el valor del atributo de DynamoDB.
Input: $util.dynamodb.toMap({ "foo": "bar", "baz" : 1234, "beep": [ "boop"] }) Output: { "M" : { "foo" : { "S" : "bar" }, "baz" : { "N" : 1234 }, "beep" : { "L" : [ { "S" : "boop" } ] } } }
-
$util.dynamodb.toMapJson(Map) : String
-
Lo mismo que
$util.dynamodb.toMap(Map) : Map
, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON. -
$util.dynamodb.toMapValues(Map) : Map
-
Crea una copia del mapa en la que cada valor se convierte al formato correspondiente de DynamoDB. Es algo inflexible en cuanto al modo en que representa algunos objetos anidados: por ejemplo, utiliza listas ("L") en lugar de conjuntos ("SS", "NS" "BS").
Input: $util.dynamodb.toMapValues({ "foo": "bar", "baz" : 1234, "beep": [ "boop"] }) Output: { "foo" : { "S" : "bar" }, "baz" : { "N" : 1234 }, "beep" : { "L" : [ { "S" : "boop" } ] } }
nota
Esto es ligeramente diferente de
$util.dynamodb.toMap(Map) : Map
, ya que solo devuelve el contenido del valor de atributo de DynamoDB y no todo el valor de atributo en sí. Por ejemplo, las siguientes instrucciones son exactamente lo mismo:$util.dynamodb.toMapValues($map) $util.dynamodb.toMap($map).get("M")
-
$util.dynamodb.toMapValuesJson(Map) : String
-
Lo mismo que
$util.dynamodb.toMapValues(Map) : Map
, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.
Utilidades S3Object
-
$util.dynamodb.toS3Object(String key, String bucket, String region) : Map
-
Convierte la clave, el bucket y la región a la representación de objeto de S3 de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.
Input: $util.dynamodb.toS3Object("foo", "bar", region = "baz") Output: { "S" : "{ \"s3\" : { \"key\" : \"foo", \"bucket\" : \"bar", \"region\" : \"baz" } }" }
-
$util.dynamodb.toS3ObjectJson(String key, String bucket, String region) : String
-
Lo mismo que
$util.dynamodb.toS3Object(String key, String bucket, String region) : Map
, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON. -
$util.dynamodb.toS3Object(String key, String bucket, String region, String version) : Map
-
Convierte la clave, el bucket, la región y la versión opcional a la representación de objeto de S3 de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.
Input: $util.dynamodb.toS3Object("foo", "bar", "baz", "beep") Output: { "S" : "{ \"s3\" : { \"key\" : \"foo\", \"bucket\" : \"bar\", \"region\" : \"baz\", \"version\" = \"beep\" } }" }
-
$util.dynamodb.toS3ObjectJson(String key, String bucket, String region, String version) : String
-
Lo mismo que
$util.dynamodb.toS3Object(String key, String bucket, String region, String version) : Map
, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON. -
$util.dynamodb.fromS3ObjectJson(String) : Map
-
Acepta el valor de cadena de un objeto de S3 de DynamoDB y devuelve un mapa que contiene la clave, el bucket, la región y la versión opcional.
Input: $util.dynamodb.fromS3ObjectJson({ "S" : "{ \"s3\" : { \"key\" : \"foo\", \"bucket\" : \"bar\", \"region\" : \"baz\", \"version\" = \"beep\" } }" }) Output: { "key" : "foo", "bucket" : "bar", "region" : "baz", "version" : "beep" }