es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Usando AWS-SDK para DynamoDB, createSet crea un Map en lugar de un Set.

Si creas un nuevo elemento y dejas una lista vacía (es decir, { a: ‘string’, b: [] }) en tus parámetros, se convertirá en un atributo de lista. Lo que realmente quiero es un atributo de conjunto de cadenas, o SS.

Revisé detenidamente la documentación y encontré createSet y tenía la esperanza de que esto resolviera mi problema. Pero desafortunadamente creó un atributo de mapa en su lugar. Actualmente, así es como lo estoy creando:

const aws = require('aws-sdk');

(async () => {
    const docClient = new aws.DynamoDB.DocumentClient();

    const params = {
        TableName: 'some_table_in_dynamodb',
        Item: {
            a: 'some string',
            b: docClient.createSet([])
        }
    };

    const response = await docClient.put(params).promise();
    console.log(response);
})();
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema es que el uso de docClient.createSet([]) está creando un atributo Map en lugar de un atributo String Set, que es lo que se desea. Para crear un atributo String Set, podemos pasar una matriz de cadenas al método docClient.createSet().

    Aquí tienes un código actualizado:

    const aws = require('aws-sdk');
    
    (async () => {
      const docClient = new aws.DynamoDB.DocumentClient();
    
      const params = {
        TableName: 'some_table_in_dynamodb',
        Item: {
          a: 'alguna cadena',
          b: docClient.createSet(['']) // pasa una matriz de cadenas vacías
        }
      };
    
      const response = await docClient.put(params).promise();
      console.log(response);
    })();
    

    Al pasar una matriz con una cadena vacía a docClient.createSet(), se creará un atributo String Set en lugar de un atributo Map.

Comments are closed.