Используя AWS-SDK для DynamoDB, createSet создает карту вместо набора

#javascript #node.js #amazon-dynamodb #aws-sdk

#javascript #node.js #amazon-dynamodb #aws-sdk

Вопрос:

Если вы должны были создать новый элемент и оставить пустой список (т.е. { a: 'string', b: [] } В ваших параметрах, Он преобразует это в атрибут списка. На самом деле мне нужен атрибут набора строк или SS.

Я еще раз просмотрел документацию и нашел createSet и надеялся, что это решит мою проблему. Но, к сожалению, вместо этого он создал атрибут карты. В настоящее время я создаю ее так:

 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);
})();
 

Ответ №1:

Я получил решение, играя с пользовательским интерфейсом в DynamoDB: список НЕ МОЖЕТ быть пустым, иначе он преобразует его в атрибут карты. чтобы исправить это, просто добавьте пустую строку.

 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(['']) // ADD STRING FOR SS ATTRIBUTE
        }
    };

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