Я создал набор с помощью клиента документов 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:
Я думаю, что проблема может быть в том, что динамо не нравится пустой набор