Я пытаюсь обновить элемент, изменив значение isRelevant
на true
:
var params = {
TableName: "test",
Key: {
"#date": data.Items[i].date.N,
"accountid": data.Items[i].accountid.S
},
UpdateExpression: "set #uu = :x",
ExpressionAttributeValues: {
":x": {"BOOL": false}
},
ExpressionAttributeNames: {
'#uu': "isRelevant",
'#date': "date"
}
};
docClient.update(params, function(err, data) {
if (err) console.log(err);
else {
console.log('worked');
}
});
Что не так в этом коде? Перепробовал все возможные способы, но все равно не работает!
2 ответа
Вам не нужно использовать сопоставление имен атрибутов для ваших ключей в динамо-машине.
На данный момент параметры читаются так, как будто у вас есть ключ с именем '#date' и вы случайно объявили атрибут с именем '#date', который вы не используете.
Вместо этого попробуйте:
var params = {
TableName: "test",
Key: { "date": data.Items[i].date, "accountid": data.Items[i].accountid },
UpdateExpression: "set #uu = :x",
ExpressionAttributeValues: { ":x": false },
ExpressionAttributeNames: { '#uu': "isRelevant" }
};
Кроме того, при использовании DynamoDB.DocumentClient вы должны использовать значения JSON, и он будет обрабатывать информацию о маршалинге в формате динамо-типа.
Если ваш date
идентификатор не Key
в DynamoDB, чем вы должны использовать в ConditionExpression
Пример :
let queryParams = {
TableName: "test",
Key: {
'accountid': data.Items[i].accountid
},
UpdateExpression: "set #uu = :x",
ConditionExpression: 'date = :date',
ExpressionAttributeValues: {
':x': false,
':date': data.Items[i].date,
},
ExpressionAttributeNames: {
'#uu': "isRelevant"
}
};
Похожие вопросы
Новые вопросы
amazon-dynamodb
Amazon DynamoDB - это закрытая база данных ключей и значений с закрытым исходным кодом, оптимизированная для горизонтального масштабирования. Это полностью управляемая, многорегиональная, многопользовательская база данных со встроенной защитой, резервным копированием и восстановлением, а также кэшированием в памяти для интернет-приложений. DynamoDB размещается на AWS, но также имеет возможность локального развертывания только для разработки и функционального тестирования. Используется на amazon.com.