Обновление списка в DynamoDB - PullRequest
1 голос
/ 23 июня 2019

Я попробовал несколько решений, приведенных здесь, в SO, но у меня возникла проблема с одной ошибкой проверки: Это моя таблица:

var params = {
    AttributeDefinitions: [
        {
            AttributeName: 'USER_AUTH_ID',
            AttributeType: 'N'
        },
        {
            AttributeName: 'EMAIL',
            AttributeType: 'S'
        }
    ],
    KeySchema: [
        {
            AttributeName: 'EMAIL',
            KeyType: 'HASH'
        },
        {
            AttributeName: 'USER_AUTH_ID',
            KeyType: 'RANGE'
        }
    ],
    ProvisionedThroughput: {
        ReadCapacityUnits: 1,
        WriteCapacityUnits: 1
    },
    TableName: tableName,
    StreamSpecification: {
        StreamEnabled: false
    }
};

Я успешно создал элементы, используя putItem, но не могу добавить их вlist:

Это мой элемент для обновления:

var paramUpdateItem = {
    TableName: tableName,
    Key: {
        'EMAIL' : {S: 'MyEmail@email.com'}
    },
    UpdateExpression: "SET #Y = list_append(#Y,:y)",
    ExpressionAttributeNames: {
        "#Y" : "COMMENT_HISTORY"
    },
    ExpressionAttributeValues: {
        ":y" : [commentToAdd]
    }
}

;

И я обновляюсь с updateItem.

Я получаю эту ошибку:

null: Ошибка: в params найден непредвиденный ключ '0'. ExpressionAttributeValues ​​[': y']

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

Любая помощь.Спасибо.

1 Ответ

3 голосов
/ 23 июня 2019

Я не могу придумать два варианта.Во-первых, это ошибка библиотеки, поскольку вы сказали, что это может быть «из-за вкладок», посмотрите, например, на эту проблему, утверждая, что это ошибка с пробелами, и предлагая обходные пути:

https://github.com/aws/aws-sdk-js/issues/2546

Другой вариант заключается в том, что вы используете низкоуровневый API (вы не показали, как вы сделали запрос).В низкоуровневом API вы не можете просто сказать {": y": [commentToAdd]}.Вы должны сказать, что этот список, по сути, является списком, и каковы типы его компонентов.Что-то вроде {': y': {'L': [{'S', 'word1'}, {'S', 'word2'}]}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...