У меня есть таблица DynamoDB под названием Bank-Statements.
Он имеет первичный ключ раздела: -
- Название: TransactionID (номер)
Он имеет индекс: -
- Имя: статементатипе-индекс
- Статус: Активный
- Тип: ГСИ
- Ключ раздела: StatementType (строка)
В столбце StatementType есть несколько записей с пометкой «RBS».
Я написал это на C #:
public async Task<string> GetRecordList()
{
try
{
var request = new QueryRequest
{
TableName = "Bank-Statements",
KeyConditionExpression = "StatementType = :searchKey",
ExpressionAttributeValues = new Dictionary<string, AttributeValue> {
{":searchKey", new AttributeValue { S = "RBS" }}}
};
var response = await dynamoDbClient.QueryAsync(request); //Error occurs here
foreach (Dictionary<string, AttributeValue> item in response.Items)
{
//do something with item
}
}
catch (Exception e)
{
logger.Info("Failed while Getting Record List");
logger.Info("Error: " + e.Message);
}
return "DONE";
}
Я получаю эту ошибку «Условие запроса пропустил элемент ключевой схемы: TransactionID»
Почему я получаю это, когда использую в качестве ключа индекс StatementType?
1 ответ
В другом учебнике я нашел этот параметр:
IndexName = "StatementType-index".
Этот код работает:
public async Task<string> GetRecordList()
{
try
{
var request = new QueryRequest
{
TableName = "Bank-Statements",
IndexName = "StatementType-index",
KeyConditionExpression = "StatementType = :searchKey",
ExpressionAttributeValues = new Dictionary<string, AttributeValue> {
{":searchKey", new AttributeValue { S = "RBS" }}}
};
var response = await dynamoDbClient.QueryAsync(request); //Error occurs here
foreach (Dictionary<string, AttributeValue> item in response.Items)
{
//do something with item
}
}
catch (Exception e)
{
logger.Info("Failed while Getting Record List");
logger.Info("Error: " + e.Message);
}
return "DONE";
}
Похожие вопросы
Новые вопросы
amazon-dynamodb
Amazon DynamoDB - это закрытая база данных ключей и значений с закрытым исходным кодом, оптимизированная для горизонтального масштабирования. Это полностью управляемая, многорегиональная, многопользовательская база данных со встроенной защитой, резервным копированием и восстановлением, а также кэшированием в памяти для интернет-приложений. DynamoDB размещается на AWS, но также имеет возможность локального развертывания только для разработки и функционального тестирования. Используется на amazon.com.