Как убрать последний элемент в наборе в динамо? - PullRequest
0 голосов
/ 26 марта 2019

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

    const params = {
      TableName: 'beta-user-' + process.env.NODE_ENV,
      Key: {
        username: request.username
      },
      UpdateExpression: "DELETE #features :feature",
      ExpressionAttributeNames: { "#features" : "features" },
      ExpressionAttributeValues: { ":feature": dynamodb.createSet([request.feature]) },
      ReturnValues: "NONE"
    };

и я называю это как

const dynamoPromise = dynamodb.update(params).promise(); return await dynamoPromise.then(result => { // stuff })

UpdateExpression Я не думаю, что это неправильно https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html#Expressions.UpdateExpressions.DELETE

Я полагаю, что проблема с ExpressionAttributeValues, если я удаляю dynamodb.createSet Я получаю много ошибок проверки.

Когда я делаю запрос на получение приложения, я получаю

{
    "message": [
        {
            "username": "x",
            "feature": [
                "blah",
                "test"
            ]
        },
        {
            "username": "z",
            "feature": [
                "blah"
            ]
        },
}

Я делаю запрос на удаление и удаляю функцию test от имени пользователя x.Это работает и возвращает тот же ответ без функции test.Я делаю еще один запрос на удаление, чтобы удалить blah.Blah удаляется, однако, когда я делаю запрос get, я получаю:

{
    "message": {}
}

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

EDIT:

Я думаю, что проблема может быть в том, что динамо не нравится пустой набор

1 Ответ

0 голосов
/ 26 марта 2019

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

...